cocoa认知
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。
CoreData本质是一个ORM框架 ORM Objective-Relational Mapping 这个映射就是我们的模型文件,一般ORM框架都用XML格式来映射 实体Entity+属性数据库表
托管对象(entity) —既不是单纯 内存对象,也不是数据库中的具体的数据,它介于这两个状态之间的,我们叫他游离态的数据
CoreData 不能执行SQL语句 取而代之,操作的是对象, FMDB SQLite 可以直接SQL语句
coredata中的核心对象
在上图中,我们可以看到有五个相关模块:
1, Managed Object Model
Managed Object Model 是 述应用程序的数据模型,这个模型包含实体(Entity),特性(Property),读取请求(Fetch Request) 等。(下文都使用英文术语。)
2,Managed Object Context
Managed Object Context 参与对数据对象进行各种操作的全过程,并监测数据对象的变化,以 供对 undo/redo 的支持及更新绑定到数据的 UI。
3,Persistent Store Coordinator
Persistent Store Coordinator 相当于数据文件管理器,处理底层的对数据文件的读取与写入。一般我们无需与它打交道。
4,Managed Object
Managed Object 数据对象,与 Managed Object Context 相关联。
CoreData的4个存储方式:
- SQLite NSSQLiteStoreType
- XML NSXMLStoreType
- Binary NSBinaryStoreType
- 内存存储 NSInMemoryStoreType
coredata结构解析
NSManagedObjectModel
- Entity - NSEntityDescription
Entity 相当于数据库中的一个表,它 述一种抽象数据类型,其对应的类为 NSManagedObject 或其子类。
NSEntityDescription 常用方法:
+insertNewObjectForEntityForName:inManagedObjectContext: 工厂方法,根据给定的 Entity 述,生成相应的 NSManagedObject 对象,并插入 ManagedObjectContext 中。
-managedObjectClassName 返回映射到 Entity 的 NSManagedObject 类名
-attributesByName 以名字为 key, 返回 Entity 中对应的 Attributes
-relationshipsByName 以名字为 key, 返回 Entity 中对应的 Relationships
- Property - NSPropertyDescription
Property 为 Entity 的特性,它相当于数据库表中的一列,或者 XML 文件中的 value-key 对中的 key。它可以 述实体数据 (Attribute),Entity 之间的关系(RelationShip),或查询属性(Fetched Property)。
Attribute - NSAttributeDescription
Attribute 存储基本数据,如 NSString, NSNumber or NSDate 等。它可以有默认值,也可以使用正则表达式或其他条件对其值 进行限定。一个属性可以是 optional 的。Relationship - NSRelationshipDescription
Relationship 述 Entity,Property 之间的关系,可以是一对一,也可以