iOS -数据持久化之CoreData
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句
1.创建项目的时候勾选Use the CoreData

2.创建好之后就会在左边的文件名那里看到一个CoreData.xcdatamodeldde文件

3.点击之后在Xcode的中间可以看到它的内容,之后点击左下角的Add Entity可以添加表(表名可以修改,但首字母必须大写)

4.在表里面添加属性

5.创建表的数据模型
(1)点击New File

(2)点击next

(3)点击next

(4)要创建哪个表的数据模型就勾选哪一个,然后点击next

// 读取coreData
// 1、读取managedObjectModel
// 2、找到里面所有实体的名字[model entitiesByName]
// 3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];
// 4、初始化 查询对象 NSFetchRequest *request = [[NSFetchRequest alloc]init];
// 5、通过上下文 查找 NSArray *list = [context executeFetchRequest:request error:nil];
NSManagedObjectContext *context = [[AppDelegate appDelegate] managedObjectContext];
// 1、读取managedObjectModel
NSManagedObjectModel *model = [[AppDelegate appDelegate] managedObjectModel];
// 2、找到里面所有实体的名字[model entitiesByName]
NSDictionary *entitiesDic = [model entitiesByName];
// 3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];
NSEntityDescription *entity = entitiesDic[@"Userinfo"];
// 4、初始化 查询请求对象 NSFetchRequest
NSFetchRequest *request = [[NSFetchRequest alloc]init];
request.entity = entity;
// request.predicate
// request.fetchLimit
// request.fetchOffset
// 5、通过上下文开始查询
aList = [context executeFetchRequest:request error:nil];
NSLog(@"%@",aList);
if (aList.count!=) {
[MytableView reloadData];
// [MytableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation: UITableViewRowAnimationNone];
}
注:appDelegate这个方法是在AppDelegate文件里面定义的,在.h文件声明
+(AppDelegate *)appDelegate;
在.m文件实现
+(AppDelegate *)appDelegate{
return (AppDelegate *)[UIApplication sharedApplication].delegate;
}
操作coreData
1、不管增删改查都需要先初始化 上下文[app managedObjectContext]
2、插入具体内容到上下文
+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
3、保存 saveContext
- (void)addEntity{
NSManagedObjectContext * conText = [[AppDelegate appDelegate]managedObjectContext];
Massage * massage = [NSEntityDescription insertNewObjectForEntityForName:@"Massage" inManagedObjectContext:conText];
[massage setValue:postView.titleTextFild.text forKey:@"title"];
[massage setValue:postView.contentTextFild.text forKey:@"content"];
Userinfo *userinfo = [NSEntityDescription insertNewObjectForEntityForName:@"Userinfo" inManagedObjectContext:conText];
NSArray * List = @[@"陈3.jpg",@"陈2.jpg",@"是1.jpg",@"是3.jpg"];
int arc = arc4random()%List.count;
UIImage *img = [UIImage imageNamed:List[arc] ];
[userinfo setValue:@"hehehe" forKey:@"name"];
[userinfo setValue:@() forKey:@"age"];
[userinfo setValue:UIImageJPEGRepresentation(img, ) forKey:@"headImage"];
[userinfo setValue:massage forKey:@"massage"];
[[AppDelegate appDelegate] saveContext];
}
iOS -数据持久化之CoreData的更多相关文章
- iOS 数据持久化(扩展知识:模糊背景效果和密码保护功能)
本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...
- iOS -数据持久化方式-以真实项目讲解
前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎 ...
- iOS数据持久化方式及class_copyIvarList与class_copyPropertyList的区别
iOS数据持久化方式:plist文件(属性列表)preference(偏好设置)NSKeyedArchiver(归档)SQLite3CoreData沙盒:iOS程序默认情况下只能访问自己的程序目录,这 ...
- iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver
IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...
- IOS数据持久化之归档NSKeyedArchiver
IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data ...
- ios数据持久化--CoreData框架的介绍和使用
1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中 ...
- iOS数据持久化-OC
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
- iOS数据持久化
在iOS中,实现数据持久化一般分为4大种: 1.属性列表 2.对象归档 3.SQLite 4.Core Data 一.属性列表 NSUserDefaults类的使用和NSKeyedArchiver有很 ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
随机推荐
- 转载 asp.net的Request.ServerVariables参数说明
转载原地址: http://blog.csdn.net/vincent_void/article/details/7739338 当讨论Request对象内容时,要研究的集合之一就是ServerVar ...
- C++学习笔记(十三):类、包和接口
看标题感觉这些术语和C++没有什么关系啊,包和接口是Java等语言加入的概念. 这篇文章是基于Java等语言的新概念(相对于C++来说的新概念)来看C++的设计思路. 类: C++中,一个文件可以包含 ...
- iOS 开发查看应用的沙盒文件
在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): X ...
- 【新闻】超灵敏MRI技术:照亮人体肺部
人口健康直接影响到一个国家的经济发展和社会进步.据我国2013年发布的肿瘤发病率统计年报表明,肺癌是我国目前首位恶性肿瘤,是癌症死亡的头号杀手,目前城市中每4名死亡的癌症患者中,约有1名是肺癌.如何开 ...
- Mac窗口管理管理软件SizeUp
一.SizeUp 是一款 Mac窗口管理管理软件.借助SizeUp,可以快速变化窗口大小(最大化.最小化),可以快速切换窗口的不同位置. 尤其在双显示器,更是扮演者方便.高效.好用的角色,提供了快速切 ...
- hdu4759 Poker Shuffle 2013 ACM/ICPC Asia Regional Changchun Online
找了很久的规律,只看十进制数字,各种乱七八糟的规律=没规律!看了别人的解题报告,虽然看懂了,可是怎么发现的这个规律呢T.T~想了很久很久~ 以下是转载的别人的图,自己再画太麻烦了~全部看出0~2n-1 ...
- android学习日记11--音频播放类
一.android 音频播放类 MediaPlayer和SoundPool都可以用来播放音频.区别是MediaPlayer占用资源高,延迟时间高,播放长音乐的,并且不能同时播放多个音乐,而SoundP ...
- C#_ajax_demo
使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=&qu ...
- phpcms v9 模板标签说明整理
1.{template "content","header"} 2.网站网址调用:{siteurl($siteid)}: 3.标签get:分页,{pc:get ...
- 手工配置tomcat 解决一闪而过~
双击tomcat 目录下的bin目录下的startup.bat 如果看到Server startup in **** ms 显示在屏幕上证明你的配置都成功了 如果一闪而过,说明出错了.请在dos进入上 ...