译者序 前言 勘误 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子类的实例. 所有托管对象都必须位于托管对象上下…
初始化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的内置模板是在应用程序委托里面设置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…
可供配置的选项根据属性类型的不同有所变化,并不是每一种属性都能配置下列选项 Transient:勾选该选项,表示该属性不写入“持久化存储区”,这听起来很奇怪,但有时候,只需要把特性留在托管对象上下文就行了. Opitional:optional特性并不一定要有值.所有特性再刚创建的时候都是optional特性.如果某个特性不是optional特性,那么它在写入存储区的时候必须要具备有效的值才行. Indexed:系统会优化Indexed特性以提高搜索效率,但是缺点是要在存储区占用更多的空间.并且…
项目创建时会有 “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即可.…
持久化存储协调器(persistent store coordinator)里面包含一份持久化存储区,而存储区里又含有数据表里的若干行数据. 与原子存储不同,SQLite数据库会在用户提交变更日志时进行增量变更,变更日志也叫事务日志. 持久化存储区只应由Core Data 创建,不应该让Core Data 使用不由它创建的数据库.如果需要使用既有的数据,应该将其导入Core Data(第8章). 同一个持久化存储协调器可以有多个持久化存储区.可以把属于iCloud的数据放到一个存储区,不属于iC…