在iOS中将业务对象与核心数据映射

我是iOS新手。 任何人都可以告诉我如何映射我的核心数据的BO,以便我可以在我的项目中重用映射。 这是我的代码

- (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进行映射吗?

塔希尔首先你必须创build你已经创build的Coredata数据库。 接下来在coredata模型的实体面板中select表格。右键单击项目历史树中的模型。 select新文件,selectcoredata和NSManagedObjectSubclass并保存它。 它创build可以在你的方法中使用的coredata表的模型类。 在这里输入图像说明

这个图像显示了db和table的select,右键单击并selectNSManagedObjectSubClass

在这里输入图像说明

这个图像显示第一个coredata比NSManagedObjectSubClass的select,在此之后,当你点击下一个它显示panal给名称,并保存在您的项目。 我希望这会帮助你,谢谢你!

只是告诉我如何在核心数据中应用像更新,删除,查找第二个最大,联接,查看等SQL查询

由于核心数据涵盖了很多东西,我可以给出一些提示。

首先,处理核心数据意味着处理被称为NSManagedObject的暂存器中的“ NSManagedObject ”的被pipe理对象。 把它看作一种容器图,它包含了基于你创build的数据模型从文件(例如sql文件)中检索到的对象。 在不保存上下文之前,更改驻留在内存中,而不是物理存储。

 [moc save:&error]; 

使用NSManagedObject可以创build,更新,查询或删除对象。 当然,还有其他的东西。

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

如果你需要执行查询,你需要看看NSFetchRequest类。 设置NSFetchRequest相当于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文件中包含的所有托pipe对象(人员)。 如果你想抓住一个特定的对象(或更多的对象),你需要使用该请求的谓词。 例如:

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

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

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

如果你需要删除一个对象,你需要做的是:

 [moc deleteObject:managedObjectToDelete]; 

如果你需要更新一个托pipe对象,你必须创build一个获取请求并检索你正在寻找的对象(例如,你可以提供给每个对象一个特定的ID,并build立一个谓词与你想要的ID)。 如果提取请求检索一些对象,则可以更新它们。

这些指导您使用核心数据的简单技巧。 我build议你阅读核心数据编程指南 。 在那里你可以find很多东西。 如果你想要,你可以从使用Core Data的一个很好的教程开始看看www.raywenderlich.com 。

如果你想要别的东西让我知道。

希望能帮助到你。