1. #import "ViewController.h"
  2.  
  3. // 第一步:引入头文件AppDelegate
  4. #import "AppDelegate.h"
  5. #import "Person.h"
  6. #import "Car.h"
  7.  
  8. @interface ViewController ()
  9.  
  10. // 第二步:声明属性[管理对象上下文](SQLite中是声明一个存储路径的属性)
  11. @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
  12.  
  13. @end
  14.  
  15. @implementation ViewController
  16.  
  17. // 懒加载
  18. - (NSManagedObjectContext *)managedObjectContext {
  19.  
  20. // 因为在AppDelegate中已经实现过了,所以在这里是从AppDelegate中去获取
  21. if (!_managedObjectContext) {
  22. // 获取appDelegate对象
  23. AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
  24. _managedObjectContext = appDelegate.managedObjectContext;
  25. }
  26. return _managedObjectContext;
  27. }
  28.  
  29. - (void)viewDidLoad {
  30. [super viewDidLoad];
  31.  
  32. // 添加Person
  33. [self addPerson];
  34.  
  35. // 删除Personf
  36. // [self deletePerson];
  37.  
  38. // 更改person信息
  39. // [self updatePerson];
  40.  
  41. // 查询所有人
  42. [self searchAllPerson];
  43.  
  44. // 更改car的信息
  45. [self updateCar];
  46.  
  47. }
  48.  
  49. #pragma mark - 添加person
  50. - (void)addPerson {
  51.  
  52. // 添加的步骤
  53. // 1.创建person实体对象,然后告诉context,让他做好准备,将这个对象添加到数据库中
  54. // 实例对象有两种方式,(初始化实体对象需要借助NSEntityDescription)
  55. // 第一种:(简单,用的多)
  56. Person *per = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
  57.  
  58. // 第二种:(不常用)
  59. // 创建一个entity的实体
  60. // NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
  61. // // 创建person对象
  62. // Person *per = [[Person alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
  63.  
  64. // 2.给对象属性赋值
  65. per.personName = @"卫庄";
  66. per.personGender = @"男";
  67. per.personAge = @;
  68.  
  69. /**
  70. * 将车的对象通过实体描述类创建出来
  71. */
  72. Car *audiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
  73.  
  74. audiCar.price = @;
  75. audiCar.color = @"白色";
  76. audiCar.brand = @"奥迪A7";
  77.  
  78. Car *benchiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
  79.  
  80. benchiCar.price = @;
  81. benchiCar.color = @"红色";
  82. benchiCar.brand = @"奔驰SUV";
  83.  
  84. // 将两辆车放到集合中存储并进行赋值
  85. NSSet *carSet = [NSSet setWithObjects:audiCar, benchiCar, nil];
  86. per.personCar = carSet;
  87.  
  88. // 3.将person对象存入数据库
  89. BOOL result = [_managedObjectContext save:nil];
  90.  
  91. // 4.判断是否插入成功
  92. if (result) {
  93. NSLog(@"添加数据成功");
  94. } else {
  95. NSLog(@"添加数据失败");
  96. }
  97.  
  98. }
  99.  
  100. #pragma mark - 删除person
  101. - (void)deletePerson {
  102.  
  103. // 1.实体化请求类【查询】
  104. NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
  105.  
  106. // 2.找到删除的条件(即根据什么去删除)(NSPredicate)
  107. request.predicate = [NSPredicate predicateWithFormat:@"personName = '卫庄'"];
  108.  
  109. // 3.由context根据删除条件的请求去具体进行删除操作
  110. NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
  111.  
  112. // 4.遍历搜索出来的结果
  113. for (Person *per in resultArray) {
  114.  
  115. // 删除查询的相关的人的信息
  116. [self.managedObjectContext deleteObject:per];
  117.  
  118. }
  119.  
  120. // 5.进行删除结果的判断
  121. BOOL result = [self.managedObjectContext save:nil];
  122.  
  123. // 6.判断结果
  124. if (result) {
  125. NSLog(@"删除成功");
  126. } else {
  127. NSLog(@"删除失败");
  128. }
  129.  
  130. }
  131.  
  132. #pragma mark - 更改person信息
  133. - (void)updatePerson {
  134.  
  135. // 1.实例化查询请求类
  136. NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
  137.  
  138. // 2.设置查询条件
  139. fetchRequest.predicate = [NSPredicate predicateWithFormat:@"personName = '卫庄'"];
  140.  
  141. // 3.由管理对象上下文“context”,按照查询条件进行相关的操作
  142. NSArray *resultArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
  143.  
  144. // 4.遍历结果更新数据
  145. for (Person *per in resultArray) {
  146.  
  147. // 更改相关的信息
  148. per.personName = @"高月";
  149. per.personGender = @"女";
  150. per.personAge = @;
  151.  
  152. NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
  153. }
  154.  
  155. // 5.进行更新结果的判断
  156. BOOL result = [self.managedObjectContext save:nil];
  157.  
  158. // 6.判断是否更新成功
  159. if (result) {
  160. NSLog(@"更新成功");
  161. } else {
  162. NSLog(@"更新失败");
  163. }
  164.  
  165. }
  166.  
  167. #pragma mark - 查询所有人
  168. - (void)searchAllPerson {
  169.  
  170. // 1.实例化查询请求
  171. NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
  172.  
  173. // 2.设置查询条件
  174. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"personName LIKE '*月'"];
  175. request.predicate = predicate;
  176.  
  177. // 3.根据管理对象上下文“context”执行相关的操作
  178. NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
  179.  
  180. // 4.遍历查询结果
  181. for (Person *per in resultArray) {
  182.  
  183. NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
  184. }
  185.  
  186. // 5.进行查询结果的判断
  187. BOOL result = [self.managedObjectContext save:nil];
  188.  
  189. // 6.判断是否查询成功
  190. if (result) {
  191. NSLog(@"查询成功");
  192. } else {
  193. NSLog(@"查询失败");
  194. }
  195. }
  196.  
  197. #pragma mark - 更新车的相关信息
  198. - (void)updateCar {
  199.  
  200. // 1.实例化查询请求
  201. NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Car"];
  202.  
  203. // 2.设置查询条件
  204. request.predicate = [NSPredicate predicateWithFormat:@"brand CONTANS '奥迪A7'"];
  205.  
  206. // 3.管理对象上下文按照查询条件去查询
  207. NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
  208.  
  209. // 4.遍历查询结果
  210. for (Car *car in resultArray) {
  211.  
  212. NSLog(@"price = %@, brand = %@, color = %@", car.price, car.brand, car.color);
  213. car.brand = @"宝马X5";
  214.  
  215. }
  216.  
  217. // 5.保存结果进行结果判断
  218. if ([self.managedObjectContext save:nil]) {
  219. NSLog(@"更新成功");
  220. } else {
  221. NSLog(@"更新失败");
  222. }
  223.  
  224. }
  225.  
  226. @end

Core Data的简单用法的更多相关文章

  1. Core Data 的简单使用

    认识cocoa Data在ios开发中的环境情况. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/f ...

  2. Core Data 学习简单整理01

    Core Data是苹果针对Mac和iOS平台开发的一个框架, 通过CoreData可以在本地生成数据库sqlite,提供了ORM的功能,将对象和数据模型相互转换 . 通过Core Data管理和操作 ...

  3. iphone数据存储之-- Core Data的使用(一)

    http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html 一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终 ...

  4. (转)iphone数据存储之-- Core Data的使用

    原文:http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html iphone数据存储之-- Core Data的使用(一)   一. ...

  5. Core Data (2)-备用

    1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中 ...

  6. IOS 数据存储之 Core Data详解

    Core Date是ios3.0后引入的数据持久化解决方案,它是是苹果官方推荐使用的,不需要借助第三方框架.Core Date实际上是对SQLite的封装,提供了更高级的持久化方式.在对数据库操作时, ...

  7. 数据存储-- Core Data的使用(一)

    一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...

  8. iphone数据存储之-- Core Data的使用

    一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...

  9. IOS 数据存储之 Core Data具体解释

    Core Date是ios3.0后引入的数据持久化解决方式,它是是苹果官方推荐使用的.不须要借助第三方框架.Core Date实际上是对SQLite的封装.提供了更高级的持久化方式.在对数据库操作时, ...

随机推荐

  1. [转载]浅谈组策略设置IE受信任站点

    在企业中,通常会有一些业务系统,要求必须加入到客户端IE受信任站点,才能完全正常运行访问,在没有域的情况下,可能要通过管理员手动设置,或者通过其它网络推送方法来设置. 有了域之后,这项工作就可以很好的 ...

  2. Win7以上 32/64位系统隐藏托盘图标

    前两天有朋友找我,让帮忙写个小工具,隐藏windows的托盘图标,想想最近在家也不想做太复杂的事,也好几年没写过windows上的小工具了,就答应了.想来挺简单的事,没想到还是有点小插曲的.特地来博客 ...

  3. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...

  4. jquery.idTabs使用方法

    idTabs是基于Jquery编写封装的一个插件,主要用于实现选项卡功能,它操作简单,只需到官网:http://www.sunsean.com/idTabs/下载插件JS脚本文件,并引用到网站中即可 ...

  5. awk引用外部变量及调用系统命令方法

    目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...

  6. [ShortCut] IE10快捷键

    适用范围: Windows 8 操作步骤: 1.快速输入网址: “Ctrl+L”.“F4”:在IE10下按下“Ctrl+L”快捷键,可以直接将光标转到浏览器地址栏(注:地址栏中的网址会被选中),可以直 ...

  7. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  8. sql添加合计

    在项目中发现有这样的写法 SELECT ZoneID,CountSQAZFZSBJZ3G+CountSQGZJRJZSL3G AS column1FROM G3MulticarrierSiteCove ...

  9. 硅谷新闻4--解决页签手指按下从左到右滑动的bug

    有一种方法可以阻止父层的View截获touch事件,就是调用 getParent().requestDisallowInterceptTouchEvent(true);方法.一旦底层View收到tou ...

  10. mysql 5.7.15发布

    2016-09-06,mysql发布了5.7更新5.7.15,修复的bug数项目之前的版本已经大大减少,说明越来越稳定了.估计再过三四个版本,就会有很多公司开始考虑生产中使用了.