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是Apple提供的一种对象图管理器,用于存储和检索应用程序的数据。然而,由于主线程主要负责用户界面...
CoreData 是苹果公司提供的一种数据管理框架,用于iOS和macOS应用中存储、管理和检索对象。它是Objective-C和Swift开发者处理复杂数据模型的强大工具。在iOS应用中,使用CoreData可以方便地创建、修改和查询数据库,...
CoreData框架提供了内置的撤销管理机制,使得开发者可以轻松地实现撤销/重做操作,这对于用户体验至关重要。这个部分可能解释了如何设置和使用这个功能,以及如何在用户操作后保持数据状态的完整。 总的来说,这个...
在 iPhone 应用开发中,Core Data 主要用于本地数据存储,它基于 SQLite 数据库引擎,但提供了更高层次的抽象,使得开发者无需直接操作 SQL。Core Data 提供了模型、托管对象上下文(ManagedObjectContext)和持久化...
《使用CoreData开发iPhone手机应用软件的实例教程》是一份专为初学者设计的指南,旨在教授如何使用Core Data在iPhone应用中管理本地数据。Core Data是Apple为iOS和macOS提供的一种数据管理框架,它简化了数据持久化...
通过这个"CoreData实例",初学者可以学习到如何创建和维护数据模型,以及如何在代码中使用这些模型来存储和检索数据,从而更好地理解和掌握苹果的CoreData框架。同时,提供的帮助文档将有助于解释各种操作的背景和...
CoreData是Apple为iOS和macOS平台提供的一种数据管理框架,用于处理应用程序的持久化数据。这个名为"coreData数据方法.rar"的压缩包文件似乎包含了一个实例项目,用于演示如何在Objective-C中使用CoreData进行数据...
对于“简单易懂”的源代码,可能会使用Cocos2d-iPhone,这是一个轻量级的游戏框架,适合开发2D游戏。 接着,**游戏架构**是另一个重要的概念。源代码可能会展示如何使用Model-View-Controller (MVC)或者Entity ...
**CoreData** 是苹果公司为iOS、macOS等平台提供的一款强大的数据管理框架。它不仅仅是一个对象持久化库,更是一个全面的数据管理解决方案,能够帮助开发者高效地进行数据模型的设计与实现。 1. **主要功能**: - ...
在iOS中,数据可以存储在UserDefaults、SQLite数据库、CoreData框架或者云服务中。CoreData是苹果提供的一种对象图形管理工具,用于处理复杂的数据模型和关系。学习如何使用CoreData来持久化应用程序的数据是iOS开发...
标题"iPhone中查看新闻的特效"和描述"iPhone开发中查看新闻特效的一个demo"暗示了我们要讨论的是如何在iPhone应用程序中实现动态、视觉上吸引人的新闻浏览效果。这种效果通常通过动画和手势识别来增强用户界面,使其...
3. 添加必要的系统框架,如Security.framework、SystemConfiguration.framework、CFNetwork.framework和CoreData.framework。 4. 在你的项目中导入头文件,例如`#import "XMPPStream.h"`和`#import "XMPPRoster.h"`...
在iOS开发中,"iPhone通讯录"是一个典型的项目,它涉及到多个关键技术点,包括Storyboard、CoreData、TableView以及SearchBar的使用。以下是对这些技术的详细解析: 首先,`Storyboard`是iOS应用中常用的一种界面...
1. **C#编程语言**:C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows平台以及跨平台的.NET框架中。在iOS开发中,通过Xamarin工具,C#也可以用来编写原生的iOS应用。因此,这份源码利用了C#的语法和...
6. CoreData框架的介绍,它是Apple提供的对象关系映射框架,用于管理应用的数据模型。 7. iCloud和本地文件同步,如何实现应用数据在不同设备间的同步。 8. NSUserDefaults的使用,适用于存储轻量级的用户偏好设置。...
3. **CoreData** 目录:这是Apple的持久化框架,用于存储和检索数据。 4. **Network编程** 目录:可能包含URLSession、Alamofire等相关网络请求的实现和问题解决。 5. **JSON** 或 **XML** 目录:讲解如何处理这两种...