iphone中 CoreData 框架的简单解释
http://www.cnblogs.com/andhm/archive/2011/05/06/2038750.html
并非严格的说, CoreData是对sqlite数据库的一个封装.
sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系.
这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主要是查询), 表格里面的记录
下面将上面说的文字, 跟CoreData的类作个对应:
- 表格结构 --> NSEntityDescription
- 数据库中所有表格和他们的联系 -->NSManagedObjectModel
- 数据库存放方式 --> NSPersistentStoreCoordinator
- 数据库操作 --> NSManagedObjectContext
- 查询语句 --> NSFetchRequest
- 表格的记录 --> NSManagedObject
可能上面的对应关系并非十分严格, 但确实可以帮助理解.
下面再看看CoreData的类
NSEntityDescription
NSManagedObjectModel
NSEntityDescription用来定义表格结构, 所以你就可以理解NSManagedObjectModel中的setEntities:(NSArray *)entities函数大概有什么用了 . 通常, 定义model, 是用文件CoreData.xcdatamodel, 可以图形化的操作. 这类似用nib来创建界面.
建个工程, 使用coredata, 模拟器运行之后, 程序对应的document目录出现一个CoreData.sqlite. 可以利用sqlite3命令来查看里面的表格结构
用命令行sqlite3 CoreData.sqlite 进入
>.tables
ZEVENT Z_METADATA Z_PRIMARYKEY
可以看到有表格ZEVENT, 对应的CoreData.xcdatamodel文件有名字叫Event的Entity
>.schema ZEVENT
CREATE TABLE ZEVENT ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZTIMESTAMP TIMESTAMP );
对应的Event中有属性timeStamp, 可以看到, 相应的ZEVENT表格中有字段TIMESTAMP
> select * from ZEVENT
1|1|1|306295807.974966
2|1|1|306295810.981875
3|1|1|306295811.982537
这表格有三个记录, 可以用来初始化三个NSManagedObject, 修改了NSManagedObject, save之后也修改了表格记录
你可以在CoreData.xcdatamodel添加新的entity, 之后用sqlit3命令来查看数据库的变化
NSPersistentStoreCoordinator
这个类的对象通常用NSManagedObjectModel的对象来初始化, 这个类抽象出不同的存放方式, 最经常用的是NSSQLiteStoreType.
NSManagedObjectContext
这个类的对象又用NSPersistentStoreCoordinator的对象来初始化, 它里面有些方法来添加, 删除NSManagedObject
NSFetchRequest
通常用NSEntityDescription来构造查询, 也就指定查询那个表格, 另外可以指定排序.
在CoreData的设计中, 下一层有相应的属性指向上一层, 所以NSManagedObject有属性得到NSEntityDescription, NSEntityDescription有属性得到NSManagedObjectModel.
至于类
NSFetchedResultsController, 只是又封了一下, 和NSFetchRequest合起来使用, 方便取数据, 另外和NSManagedObjectContext关联, 当数据库发生变化的时候收到通知.
这文章只初步梳理了一下CoreData各类的关系, 各类的方法还需要一一研究. 文章最开始说CoreData是对sqlite数据库的一个封装, 不是严格的, CoreData不一定用sqlit来实现, 但他们之间确实有种对应关系.
分享到:
相关推荐
iOS中的CoreData实现增删改查
CoreData简单使用dome,CoreData简单使用dome,CoreData简单使用dome
针对CoreData的一个简单封装,可实现基本的插入,删除,查询,更新的功能。
对于coredata的简单封装,实现建表 增 删 改 查
自己写的CoreData多表查询demo,源码和说明文档都有哦.
iPhone 多线程 CoreData使用 源代码 如何创建多线程,以及如何在多线程中使用CoreData
用Swift简单实现coreData数据库增删改查和关系表
coreData数据库操作!~有需要的盆友可以看一下
Coredata结合MJExtension的简易封装。
ios coredata 简单使用 增删改查
1.一个完整的app,简单完整的展示coredata在swift中的用法。 2.包括操作撤回、取消撤回功能。3.包括监控系统语言修改功能。4.包括coredata与tableview的融合。5.完全是用swift实现,下载后直接xcode即可运行。
利用coredata进行一个简单的存储,封装了coredata的数据操作; 注释详细,供新人学习;
xcode 中 CoreData的第三方包的使用
简单方便的创建coredata,用来简单的存储数据,减少了SQL语句的书写
使用CoreData开发iPhone手机应用软件的实例教程.pdf
coredata是iOS系统提供用于对象化管理数据并且持久化的框架,较于FMDB,coredata的优势:第一是CoreData作为苹果提供的原生框架,在内存方法比SQLite有性能上的优势。第二是CoreData操作数据不需要使用SQLite代码,...
AlecrimCoreData - 一个用Swift编写的强大而简单的Core Data 封装框架
CoreData增删改查的简单使用
Cadmium - 一个封装CoreData的Swift框架,隐藏上下文复杂性,并帮助实现最佳实践。
方便使用的 CoreData 1.导入 CoreData 框架,引入头文件 2.创建数据的模型文件 3.读取数据库的模型文件 4.创建持久化的数据文件