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

来源:互联网 发布:香港直播软件apk 编辑:程序博客网 时间:2024/05/16 07:58

在创建项目过程时,请选中一个标签为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
原创粉丝点击