我目前的理解,CoreData相当于一个综合的数据库管理库,它支持sqlite,二进制存储文件两种形式的数据存储。而CoreData提供了存储管理,包括查询、插入、
删除、更新、回滚、会话管理、锁管理等一系列数据库操作。另外,开发者还可以在xcode中使用 .xcdatamodel 扩展名的文件,以图形化的形式编辑数据模型,这里包括了
Entities、Properties、Attributes、Relationships四个概念,这里跟关系型数据库有很大的相似点。
下面来看一下CoreData的框架。
一次来了解一下 PersistentStore、DataModel、PersistentStoreCoordinator、ManagedObjects、ManagedObjectsContext、FetchRequest 这些概念。
PersistentStore
这个是数据真正存储的地方,CodeData提供了两种存储的选择,分别是sqlite和二进制文件。PersistentStore本身并不是objc类,仅仅是数据存储。
DataModel
对应的objc类为 NSManagedObjectModel,一个典型的应用如:
- /**
- Returnsthemanagedobjectmodelfortheapplication.
- Ifthemodeldoesn'talreadyexist,itiscreatedbymergingallofthemodels
- foundintheapplicationbundle.
- */
- -(NSManagedObjectModel*)managedObjectModel{
- if(managedObjectModel!=nil){
- returnmanagedObjectModel;
- }
- managedObjectModel=[[NSManagedObjectModelmergedModelFromBundles:nil]retain];
- returnmanagedObjectModel;
- }
这里用了iPhone开发中典型的laze loading,而
copy