IOS------Core Data的基本使用

在创建项目过程时,请选中一个标签为Use Core Data的复选框

1. 实体和托管对象

项目导航面板中,有一个名为Core_Data_Persistence.xcdatamodeld的文件,在这里面会有一个数据模型编辑器。它代替了使用代码创建NSObject的子类并让其遵循NSCoding和NSCopying的传统方式。而是现在数据模型编辑器中创建一些实体(entity),然后再代码中为这些实体创建托管对象(managed object)
注意:“实体”表示对对象的描述,而“托管对象”表示在运行时创建的该实体的具体实例
实体有属性(property)组成:attribute、relationship、fetched property

  1. 键—值编码
    我们的代码中不在使用存取方法和修改方法,而是使用键—值编码来设置属性或检索它们的已有值。在操作托管对象,用于设置和检索属性值的键就是希望设置的特性的名称。因此,要从托管对象中检索存储在name特性中的值或者要为托管对象的属性设置新值,需要调用一下方法
NSString *name = [myManagedObject valueForKey:@"name"];
[myManagedObject setCValue:@"abc" forKey:@"name"];
  1. 在上下文中结合
    这些托管对象位于持久存储中,有时也称为支持存储(backing store)。默认情况下,Core Data应用将支持存储实现为存储在应用Documents目录中的sqlite数据库。期间的相关存取操作都将由Core Data完成。除了sqlite之外,支持存储还可以作为二进制文件实现,甚至以XML形式存储。
    出了创建它之外,我们不会直接操作持久存储,而是使用所谓的托管对象上下文。上下文协调对持久存储的访问,同时保存自上次保存对象以来修改过的属性信息。上下文还能通过撤销管理器来注册所有更改,这意味着你可以撤销单个操作或会滚到上次保存的数据。
NSManagedObjectContext *context = [appDelegate managedObjectContext];
  1. 创建新的托管对象
NSManagedObject *thing = [NSEntityDescription insertNewObjectForEntityForName:@"Thing" inManagedObjectContext:context];
  1. 获取托管对象
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescr = [NSEntityDescription entityForName:@"Thing" inManagedObjectContext:context];
[request setEntity:entityDescr];

也可以使用NSPredicate类为获取请求指定条件

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(name = %@)",nameString];
[request setPredicate:pred];

创建了获取请求并为它提供实体描述之后,使用NSManagedObjectContext中的实例方法来执行请求:

NSError *error;
NSArray *objexts = [context executeFetchRequest:request error:&error];
if(objects == nil){
    // 错误处理...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值