1

我是 iOS 新手。谁能告诉我如何将我的 BO 与 Core Data 映射,以便我可以在我的项目中重用映射。这是我的代码

- (void) saveData
{       
    CoredataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSManagedObject *newContact;

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];

    [newContact setValue:firstName.text forKey:@"firstName"];
    [newContact setValue:lastName.text forKey:@"lastName"];
    [newContact setValue:driverLicenceno.text forKey:@"driverLicenceNumber"];
    [newContact setValue:state.text forKey:@"state"];
    [newContact setValue:phoneNO.text forKey:@"phoneNumber"];
    [newContact setValue:injuryStatus.text forKey:@"injuryStatus"];
    [newContact setValue:emailAddress.text forKey:@"emailAddress"];

    NSLog(@"fName%@",firstName.text);
    firstName.text = @"";
    NSLog(@"fName%@",firstName.text);
    lastName.text = @"";
    driverLicenceno.text = @"";
    state.text = @"";
    phoneNO.text = @"";
    injuryStatus.text = @"";
    emailAddress.text = @"";

    NSError *error;
    [context save:&error];
    status.text = @"Person saved";
}

除了这个之外,还有其他方法可以将我的 BO 与 coredata 映射吗?

4

2 回答 2

2

首先你必须创建你已经创建的 Coredata db。接下来在 coredata 模型的实体面板中选择表。右键单击项目层次结构树中的模型。选择新文件,选择 coredata 和 NSManagedObjectSubclass 然后保存。它为您可以在方法中使用的 coredata 表创建模型类。在此处输入图像描述

此图像显示选择 db 和 table 以右键单击并选择 NSManagedObjectSubClass

在此处输入图像描述

此图像显示了第一个 coredata 的选择,而不是 NSManagedObjectSubClass,然后当您单击下一步时,它会显示面板以提供名称并将其保存在您的项目中。我希望这对你有帮助谢谢!

于 2013-03-20T07:15:42.090 回答
1

告诉我如何在核心数据中应用 sql 查询,如更新、删除、查找第二个最大值、连接、查看等

由于 Core Data 涵盖了很多东西,我可以给出一些提示。

首先,处理 Core Data 意味着处理“存在”在一种名为NSManagedObject. 将其视为一种容器图,其中包含根据您创建的数据模型从文件(例如 sql 文件)中检索到的对象。除非您不保存上下文,否则更改将驻留在内存中并且不会物理存储。

[moc save:&error];

使用NSManagedObject可以创建、更新、查询或删除对象。当然,还可以做其他事情。

如果您需要插入一个新的托管对象(在您的数据模型中声明),您可以使用insertNewObjectForEntityForName:inManagedObjectContext:.

如果你需要执行查询,你需要看看NSFetchRequest类。设置 aNSFetchRequest相当于 SQL 语言中的 SELECT 语句。

这里有一个简单的例子:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

该数组results包含 sqlite 文件中包含的所有托管对象(人员)。如果要获取特定对象(或更多对象),则需要对该请求使用谓词。例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName == %@", @"John"];
[request setPredicate:predicate]; 

在这种情况下results,包含属性等于的对象(人)John。设置谓词等于将 WHERE 子句放在 SQL 语句中。

如果您想设置连接、视图等,您需要NSPredicates在实体之间正确执行(基于关系和属性)并让 Core Data 为您执行行内容。

如果你需要删除一个对象,你需要这样做:

[moc deleteObject:managedObjectToDelete];

如果您需要更新一个托管对象,您必须创建一个获取请求并检索您正在寻找的对象(例如,您可以为每个对象提供一个特定的 id 并使用您想要的 id 设置一个谓词)。如果 fetch 请求检索到一些对象,那么您可以更新它们。

这些是指导您使用 Core Data 的简单技巧。我建议你阅读核心数据编程指南。在那里你可以找到很多东西。如果您愿意,可以从有关使用 Core Data 的优秀教程开始,请访问www.raywenderlich.com

如果你想要别的东西,请告诉我。

希望能帮助到你。

于 2012-05-21T07:55:45.400 回答