第一章的例子配置好了持久化存储区.持久化存储协调器.托管对象上下文.但是还没有对象图,本章要介绍托管对象模型的基础知识,并配置范例程序的对象图. 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…
译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. 托管对象数据模型的基本知识 传统数据库模式的设计与Core Data 之间的共性,并介绍数据模型.讨论实体(entity)和属性,配置基本的托管对象模型(managed object model).如何选择正确的数据类型.插入.获取.过滤.排序及删除托管对象.获取请求模板. 3. 托管对象数据模型…
Core Data是个框架,把数据当作对象来操作. 由Core Data提供的数据对象叫托管对象(managed objecgt),而Core Data 位于程序和持久化存储区之间. 托管对象模型里有对象图(object graph),对象图里有实体(实体类),实体创建托管对象. 托管对象持有一份相关数据的拷贝.可以看作数据库里某张表的某一行. 托管对象可以是NSManagedObject实例,但是一般情况下,它是某个NSManagedObject子类的实例. 所有托管对象都必须位于托管对象上下…
持久化存储协调器会试着用新版的模板打开原来的持久化存储区,但是那是旧的模板,旧的格式,当然会出错.现在要做的就是迁移现有的持久化数据区,以便跟新模型匹配. 怎么进行迁移呢? 在什么时候进行迁移? 在向NSPersistentStoreCoordinator添加存储区的时候. 那么如何添加呢? 答案是,将下列选项放到NSDictionary里传过去,就会自动完成存储区的迁移工作. 如果传给NSPersistentStoreCoordinator的NSMigratePersistentStoresA…
初始化Core Data的三个方法: init,初始化托管对象模型.持久化存储协调器.托管对象上下文 - (id)init { ) { NSLog(@"Running %@ '%@'",self.class, NSStringFromSelector(_cmd)); } if (self = [super init]) { _model = [NSManagedObjectModel mergedModelFromBundles:nil]; _coordinator = [[NSPer…
有些支持Core Data的内置模板是在应用程序委托里面设置Core Data的.但是为了模块化,我们通过应用程序委托惰性地创建CoreDataHelper类的实例: 初始化托管对象模型 根据托管对象模型创建持久化存储区,并据此初始化持久化存储协调器 根据持久化存储协调器来初始化托管对象上下文 修改程序,创建CoreDataHelper: 创建新组:Generic Core Data Classes 创建名为 CoreDataHelper 的class,继承自NSObject, 加入代码 #im…
Core Data通过谓词(NSPredicate)来筛选,比如限定获取的数量等.谓词基本对存储区不敏感,但也有例外,比如:matches可用在 in-memory存储区,但是不能用在SQLite存储区.谓词是SQL里面的where子句. 在筛选的过程中,每个托管对象都会根据谓词求值,根据返回的YES或NO取舍. 具体的谓词规则查阅:developer.apple.com 并搜索Predicate Programming Guide. 程序修改代码如下: NSSortDescriptor *so…
单精度浮点数与双精度浮点数:创建NSManagedObject紫雷师,如果实体中单精度或双精度浮点数类型,那么在子类里,相关特性的类型是NSNumber. 小数:涉及货币时,建议设置为小数(decimal),精度高.特性类型为NSDecimalNumber,若要保留精度,只能使用NSDecimalNumber内置的方法. 字符串String:可以存放字符数组(array of character)或普通文本(plain old text).对应特性为NSString. Boolean:对应特性为…
项目创建时会有 “Use Core Data" ,但是,有时没有勾选这个选项,那么就要手动链接Core Data Framework. 选中 Grocery Dude Target General > Linked Frameworks and Libraries > + ,选择CoreDataFramework 1.4.1. Core Data Helper 简介 1.4.2. 实现 Core Data Helper 类…
如果应用程序要保存的设置数据太多,以致NSUserDefaults及“属性列表“(property list)这种简单的存储方案无法应付.不需要再"重新发明轮子"(reinventing the wheel),使用Core Data即可.…