Core Data Tutorial

core data支持IOS 3以后的系统。
Core Data是不是一个关系数据库或关系数据库管理系统(RDBMS)
Core Data不是银弹
新建工程时,勾上core data的选项之后,在appdelegate.h文件中会自动生成几个成员变量
其中applicationDocumentsDirectory会返回持久化存储数据的路径
调用saveContext方法,可以保存你改变的数据

core data stack:


A managed object:它是NSManagedObject或者NSManagedObject的子类的实例,就是类似于数据库中表里面的一条数据,也就是MVC中的Modle类。
The managed object context:是NSManagedObjectContext的实例,主要管理managed objects,它在你的应用里处于重要位置,在应用的生命周期里管理验证、关系维护、redo/undo操作。

managed Objects in Context:

a managed object context包含了两条记录,但是在内存中,其中一条数据已经改变了,但是因为没有提交,所以a managed object context中的记录还是没有变化的。

A managed object model:它是NSManagedObjectModel的实例,它是在database和modle中间的entity description,model是entity(NSEntityDescription实例)的集合(模型是一个实体的描述对象的集合)
它们之间的关系:


A persistent store coordinator:它是NSPersistentStoreCoordinator的实例,它管理着持久化的数据存储,A persistent object store是你应用程序的对象和数据库中记录的映射。

A complex Core Data stack:


Fetching Managed Objects:取回对象数据需要managed object context和一个取回的请求,请求为NSFetchRequest实例,如果要有order by等操作的,那么使用NSPredicate实例。具体看NSPredicate guide


Deleting Events:操作具体看代码
如果改了model,那就打不开持久化的数据。
使用NSFetchedResultsController可以提高在fetch大对象的效率,但是尽量不要存储大对象

存储照片,查看
PhotoLocations sample
TaggedLocations sample

Core Data Utility Tutorial:这是一个可以使用代码来创建entity等实体类的命令行模式,就像可以用代码创建代替xib一样,具体可以看下面的官方工程

附件中有实例代码

a managed object context:是一个容器,当你从持久化存储中取出数据,数据会copy一份到容器中,当你通过fetch request进行增删改查操作,这些都是在容器中执行的,当你需要保存数据的时候,save一下,就会持久化到手机。

NSPersistentDocument类提供对容器的操作,它继承自NSDocument,所以可以使用core data的框架进行读写操作。

Entity也可以继承,方式可以通过xocde或者代码(setSubentities)来实现
Entity也可以抽象
NULL在数据库中是一个独立的意思,不代表任何意思,就是没有值

猜你喜欢

转载自guafei.iteye.com/blog/1832453
今日推荐