删除托管对象,只要调用托管对象上下文的deleteObject 或 deleteObjects就可以了.同样,真正的删除,要在调用save:之后.…
到现在为止,还没有创建过托管对象,回顾了一下,只是创建了托管对象模型,持久化存储区,持久化存储协调器,托管对象上下文. 那么,现在就来创建托管对象吧. 使用NSEntityDescription 的 insertNewObjectForEntityForName来创建 - (void)demo{ ) { NSLog(@"Running %@ '%@'",self.class, NSStringFromSelector(_cmd)); } NSArray *newItemNames =…
用NSFetchRequest获取NSArray,里面都是托管对象.如果上下文里没有数据,就会从持久化存储区里获取. NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Item"]; NSArray *itemObjects = [_coreDataHelper.context executeFetchRequest:request error:nil]; for (Item *item in…
Core Data是个框架,把数据当作对象来操作. 由Core Data提供的数据对象叫托管对象(managed objecgt),而Core Data 位于程序和持久化存储区之间. 托管对象模型里有对象图(object graph),对象图里有实体(实体类),实体创建托管对象. 托管对象持有一份相关数据的拷贝.可以看作数据库里某张表的某一行. 托管对象可以是NSManagedObject实例,但是一般情况下,它是某个NSManagedObject子类的实例. 所有托管对象都必须位于托管对象上下…
有些支持Core Data的内置模板是在应用程序委托里面设置Core Data的.但是为了模块化,我们通过应用程序委托惰性地创建CoreDataHelper类的实例: 初始化托管对象模型 根据托管对象模型创建持久化存储区,并据此初始化持久化存储协调器 根据持久化存储协调器来初始化托管对象上下文 修改程序,创建CoreDataHelper: 创建新组:Generic Core Data Classes 创建名为 CoreDataHelper 的class,继承自NSObject, 加入代码 #im…
译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. 托管对象数据模型的基本知识 传统数据库模式的设计与Core Data 之间的共性,并介绍数据模型.讨论实体(entity)和属性,配置基本的托管对象模型(managed object model).如何选择正确的数据类型.插入.获取.过滤.排序及删除托管对象.获取请求模板. 3. 托管对象数据模型…
管理托管对象的生命周期(lifecycle).还有其它功能:faulting.变更追踪(change tracking).验证(validation)等. faulting:只把用到的那一部分数据从持久区里获取出来(第10章). 变更追踪:用于支持重做及撤销功能. 验证机制:确保由托管对象模型所订立的规则.比方说,可以针对实体的单个属性来限定其最小值或最大值(第2章). 托管对象上下文也可以不止一个.有时我们需要在后台处理任务(比如把数据保存到磁盘或导入数据),这种情况下可以使用多个托管对象上下…
第一章的例子配置好了持久化存储区.持久化存储协调器.托管对象上下文.但是还没有对象图,本章要介绍托管对象模型的基础知识,并配置范例程序的对象图. 2.1. 托管对象模型是什么 托管对象模型是一种数据结构. 2.2. 添加托管对象模型 2.3. 实体 2.4. 属性 2.5. Integer 16 .Integer 32.Integer 64 2.6. 单精度浮点数与双精度浮点数 2.7. 属性的各种设置选项 2.8. 创建 NSManagedObject 的子类 2.9. Scalar Prop…
初始化Core Data的三个方法: init,初始化托管对象模型.持久化存储协调器.托管对象上下文 - (id)init { ) { NSLog(@"Running %@ '%@'",self.class, NSStringFromSelector(_cmd)); } if (self = [super init]) { _model = [NSManagedObjectModel mergedModelFromBundles:nil]; _coordinator = [[NSPer…
可供配置的选项根据属性类型的不同有所变化,并不是每一种属性都能配置下列选项 Transient:勾选该选项,表示该属性不写入“持久化存储区”,这听起来很奇怪,但有时候,只需要把特性留在托管对象上下文就行了. Opitional:optional特性并不一定要有值.所有特性再刚创建的时候都是optional特性.如果某个特性不是optional特性,那么它在写入存储区的时候必须要具备有效的值才行. Indexed:系统会优化Indexed特性以提高搜索效率,但是缺点是要在存储区占用更多的空间.并且…