IOS------Core Data的基本使用
2016-09-25 20:41
417 查看
在创建项目过程时,请选中一个标签为Use Core Data的复选框
注意:“实体”表示对对象的描述,而“托管对象”表示在运行时创建的该实体的具体实例。
实体有属性(property)组成:attribute、relationship、fetched property
键—值编码
我们的代码中不在使用存取方法和修改方法,而是使用键—值编码来设置属性或检索它们的已有值。在操作托管对象,用于设置和检索属性值的键就是希望设置的特性的名称。因此,要从托管对象中检索存储在name特性中的值或者要为托管对象的属性设置新值,需要调用一下方法
在上下文中结合
这些托管对象位于持久存储中,有时也称为支持存储(backing store)。默认情况下,Core Data应用将支持存储实现为存储在应用Documents目录中的sqlite数据库。期间的相关存取操作都将由Core Data完成。除了sqlite之外,支持存储还可以作为二进制文件实现,甚至以XML形式存储。
出了创建它之外,我们不会直接操作持久存储,而是使用所谓的托管对象上下文。上下文协调对持久存储的访问,同时保存自上次保存对象以来修改过的属性信息。上下文还能通过撤销管理器来注册所有更改,这意味着你可以撤销单个操作或会滚到上次保存的数据。
创建新的托管对象
获取托管对象
也可以使用NSPredicate类为获取请求指定条件
创建了获取请求并为它提供实体描述之后,使用NSManagedObjectContext中的实例方法来执行请求:
1. 实体和托管对象
项目导航面板中,有一个名为Core_Data_Persistence.xcdatamodeld的文件,在这里面会有一个数据模型编辑器。它代替了使用代码创建NSObject的子类并让其遵循NSCoding和NSCopying的传统方式。而是现在数据模型编辑器中创建一些实体(entity),然后再代码中为这些实体创建托管对象(managed object)。注意:“实体”表示对对象的描述,而“托管对象”表示在运行时创建的该实体的具体实例。
实体有属性(property)组成:attribute、relationship、fetched property
键—值编码
我们的代码中不在使用存取方法和修改方法,而是使用键—值编码来设置属性或检索它们的已有值。在操作托管对象,用于设置和检索属性值的键就是希望设置的特性的名称。因此,要从托管对象中检索存储在name特性中的值或者要为托管对象的属性设置新值,需要调用一下方法
NSString *name = [myManagedObject valueForKey:@"name"]; [myManagedObject setCValue:@"abc" forKey:@"name"];
在上下文中结合
这些托管对象位于持久存储中,有时也称为支持存储(backing store)。默认情况下,Core Data应用将支持存储实现为存储在应用Documents目录中的sqlite数据库。期间的相关存取操作都将由Core Data完成。除了sqlite之外,支持存储还可以作为二进制文件实现,甚至以XML形式存储。
出了创建它之外,我们不会直接操作持久存储,而是使用所谓的托管对象上下文。上下文协调对持久存储的访问,同时保存自上次保存对象以来修改过的属性信息。上下文还能通过撤销管理器来注册所有更改,这意味着你可以撤销单个操作或会滚到上次保存的数据。
NSManagedObjectContext *context = [appDelegate managedObjectContext];
创建新的托管对象
NSManagedObject *thing = [NSEntityDescription insertNewObjectForEntityForName:@"Thing" inManagedObjectContext:context];
获取托管对象
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){ // 错误处理... }
相关文章推荐
- IOS对象关系映射(ORM)之coreData框架的学习——(一)基本使用
- iOS Coredata的基本使用
- iOS CoreData的基本使用
- iOS之CoreData基本使用以及简单封装
- iOS core Data 详解-<1>基本使用
- iOS 6 编程--Core Data持久化数据存储(2)-使用Core Data实现简单ShoppingCart应用程序
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- IOS CoreData 使用 (一)
- 『IOS』ios中的coredata的使用
- IOS CoreData的初始化使用
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- iOS之分析网易新闻存储数据(CoreData的使用,增删改查)【转】
- [ios开发基础之 Core Data[3]]如何使用NSFetchedResultsController 来集成TableView操作
- iOS CoreData的基本用法
- iOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- IOS--CoreData使用介绍
- IOS Core Data 使用(三)
- IOS CoreData 使用 (一)
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)