CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData的如何使用。
1. 新建一个项目,勾选使用Core Data, 新建后需要导入:CoreData.framework
2.新建项目后,AppDelegate类会生成三个属性
[cpp] view plaincopy
- @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
- @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
- @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
这三个对象操作数据会用的到。
3.新建一个实体对象
4. 创建一个类与实体对象关联
5. 保存一个实体模型对象
[java] view plaincopy
- Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- person.personId = @10002;
- person.age = @29;
- person.name = [NSString stringWithFormat:@"jack"];
- NSError *error = nil;
- BOOL ret = [self.managedObjectContext save:&error];
- if (ret) {
- NSLog(@"保存成功!");
- } else {
- NSLog(@"error");
- }
6.删除一个实体模型对象
[cpp] view plaincopy
- //删除
- - (void)modifyPerson {
- NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
- [fetchReqeust setEntity:entifyDesc];
- //查询年龄大于30的实体person对象
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age=30"];
- [fetchReqeust setPredicate:predicate];
- //查询出来的person对象数组
- NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
- //遍历删除
- for (Person *p in persons) {
- [self.managedObjectContext deleteObject:p];
- }
- }
7. 查询
[cpp] view plaincopy
- //根据条件查询数据
- - (void)queryPerson {
- NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- //查询对象
- NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];
- [fetchReqeust setEntity:entifyDesc];
- //查询条件
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age>40 && self.personId>10015"];
- [fetchReqeust setPredicate:predicate];
- //排序,按age降序排列
- NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
- [fetchReqeust setSortDescriptors:@[sortDesc]];
- //查询
- NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];
- for (Person *p in persons) {
- NSLog(@"name=%@,age=%@,id=%@",p.name,p.age,p.personId);
- }
- }
参考资料:
Core Data Reference
API listing for the Core Data classes
http://developer.apple.com/documentation/Cocoa/Reference/CoreData_ObjC/index.html
NSPredicate Reference
API listing for NSPredicate
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSPredicate.html
发表评论
-
如何使用AV Foundation从摄像头将视频帧捕获为图像
2012-11-15 17:21 7385如果译错,感谢指出。 英文原文地址:https://d ... -
iOS单元测试
2012-11-05 11:37 869转自:http://www.cnblogs.com/ke ... -
ASIHTTPRequest缓存策略的设置
2012-10-30 17:23 3829ASIHTTPRequest 是一款强大的网络请求框架,该框架 ... -
【无限互联】xcode自定义类的模板
2012-10-23 19:37 1112翻译:http://www.bobmccune.com/ ... -
【无限互联】适配iOS6和iPhone5屏幕
2012-10-23 18:05 24271. iOS6的mo模拟器比较大,通过comman ... -
【无限互联】mac下配置svn服务器
2012-10-22 13:30 730在mac下配置svn服务器其实很简单,只需要简单的几句命令就可 ... -
【无限互联】iOS开发之多线程开发
2012-10-10 17:41 1205本节要点: 1.多线程的概念 2.掌握iOS中多线程 ... -
【无限互联】iOS开发block用法之UIAlertView控件的修改
2012-10-10 17:06 2619原始的UIAlertView的需要通过委托方法来实现按钮 ... -
Objective-C新特性
2012-09-05 14:38 661基于Xcode4.4(不完全独有)。1. 成员方法无需前置声明 ... -
iphone-NSDate日期处理
2012-08-31 16:25 1025NSDate存储的是世界标准时(UTC),输出时需要 ... -
iphone开发资源汇总
2012-08-31 16:16 1564如何用Facebook graphic api上传视 ... -
iOS-如何让xcode自动检查内存泄露
2012-08-31 16:05 1055在project-setting中找到 “Run Static ... -
UIScrollView的属性总结
2012-02-08 15:58 4386在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scr ... -
iPhone开发之 ARC是什么
2012-01-17 16:58 1331相关链接:http://blog.csdn ... -
画图时 自己做的一小笔记
2012-01-07 21:02 9230 CGContextRef context = UIGra ... -
让Xcode 4.2生成的app支持旧版iOS设备(armv6)
2012-01-07 00:46 1283这几天遇到一个非常奇怪的问题,基于Xcode 4.2开发的ap ... -
5个开源库的JSON解析速度测试
2011-12-03 23:15 1410iOS5新增了JSON解析的API ... -
获取iOS设备当前ip地址
2011-11-17 23:16 1338第一种方法是用系统api的方式获取,如下 #include & ... -
Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts)
2011-11-12 00:08 1396一个Graphics Context表示一 ... -
Quartz 2D编程指南(1) - 概览
2011-11-11 23:57 1652Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Ma ...
相关推荐
沙盒 和 数据持久化存储 Core Data 和 NSUserDefaults 案例
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data。 本文介绍对象归档来持久化数据。归档的作用就是将对象以文件的形式保存到磁盘中,以使得数据序列化和持久化。 使用归档的...
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefault、SQLite3和Core Data 本文章讲述通过属性列表的方式持久化数据,这个方法也是我们平时最经常用到的方式。比如应用程序的配置和个性化的设置,一般...
一个使用SQLite3来进行数据持久操作的例子,本来是应该和前面的资源一起传上来的,不小心漏掉了,于是单独传吧。感觉这个用赶来比core data方便很多啊,sql语句的使用也很方便。
代码展示了Core Data添加、修改、删除、查询数据,并且将数据保存到本地
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data NSUserDefaults官方文档介绍: NSUserDefaults类为和默认系统类交互提供了一种编程接口。默认系统允许应用程序去定制其行为...
讲解了数据持久化之Core Data,示例展示了多表操作,创建多表之间联系
core data基本的增,查,改,删
DT存储 ... 由于大部分数据持久化库都是基于Core Data的,我在99Taxis的支持下,决定开源这个源码。 我希望它可以帮助:-) 欢迎提出建议,请随时在上与我联系。 要求 iOS 6 或更高版本 ARQ 例子 Coco
命中列表2 我的下一个应用程序将使用 Swift,它将使用 Core Data 进行对象持久化。 我最近学习了 Swift,我需要弄清楚 Swiftian Core Data。 Pietro Rea 的优秀“Your First Core Data App Using Swift”是一个很好...
coredata是iOS系统提供用于对象化管理数据并且持久化的框架,较于FMDB,coredata的优势:第一是CoreData作为苹果提供的原生框架,在内存方法比SQLite有性能上的优势。第二是CoreData操作数据不需要使用SQLite代码,...
2014年,我们决定使用作为Core Data的包装,但是随着时间的流逝,出现了许多和基本的线程安全性问题。 在2017年,不再支持MagicalRecord,新的解决方案看起来更有吸引力。 我们决定采用 :由我们的一位工程师开发的...
数据持久化:掌握SQLite数据库操作,了解Shared Preferences、Core Data等本地数据存储方式。 JSON解析:能使用Gson、Jackson、JSONModel等进行JSON数据解析与序列化。 GPS定位:了解并实现GPS和网络定位功能,...
提供一个核心数据存储,该存储对所有持久化的数据进行加密。 除了初始设置外,用法与Core Data完全相同,并且可以在使用Core Data的现有项目中使用。 解决的漏洞 SQLite数据库未加密,内容为纯文本 CWE-311:缺少...
多个SQLite持久化存储可以通过类似iCloud或者Dropbox的文件同步平台耦合在一起。该框架可容易地被拓展以支持任何可在设备间移动文件的服务,包括自定义服务器。A synchronization framework for Core Data.
这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 demo 又有解释,实现快速上手.
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data
特别是在iOS上,长期以来的首选一直是Core Data 。 它有效,并且是许多系统应用程序的内部数据持久性机制。 但是,当将结构化数据持久性系统部署到数亿个移动设备时,在数据持久性的内在性以及更高级别的应用程序...
SQKDataKit 类的集合可简化使用Core Data的工作,...您应该只使用一个SQKContextManager因为它为您的Core Data堆栈维护了持久性存储协调器实例。 建议您在应用程序的初始加载期间创建它,例如在AppDelegate中。 使用并
它允许组织和管理关系数据并将其序列化到SQLite或自定义存储。 可以使用代表实体及其关系的高级对象来访问或修改数据。 NexusData管理持久性存储中的所有对象,跟踪更改并维护关系的一致性。 本质上,它将Core ...