CoreData是苹果提供的一种ORM(对象型关系数据库),类似于JavaEE轻量级架构中得Hibernate。这里总结一下CoreData的使用流程。

  1.创建Model

  

  2.添加实体,同时添加属性

  

  3.添加完属性后,即可以生成被管理模型

  4.设计数据库管理类(WKDataManager)

  WKDataManager.h

 1 #import <Foundation/Foundation.h>
 2
 3 @interface WKDataManager : NSObject
 4
 5 /**
 6  *  单例
 7  *
 8  *  @return
 9  */
10 + (instancetype) sharedDataManager;
11
12 /** 管理上下文 */
13 @property (strong, nonatomic) NSManagedObjectContext *context;
14 @end

  

 1 #import "WKDataManager.h"
 2 #import <CoreData/CoreData.h>
 3 #import "NSString+docDir.h"
 4 static WKDataManager *_instance;
 5
 6 @implementation WKDataManager
 7
 8 + (id)allocWithZone:(struct _NSZone *)zone
 9 {
10     static dispatch_once_t onceToken;
11     dispatch_once(&onceToken, ^{
12         _instance = [super allocWithZone:zone];
13     });
14     return _instance;
15 }
16
17 + (instancetype)sharedDataManager
18 {
19     if (_instance == nil) {
20         _instance = [[WKDataManager alloc] init];
21     }
22     return _instance;
23 }
24
25 - (id)init
26 {
27     if (self = [super init]) {
28         //打开数据库
29         [self openDB];
30     }
31     return self;
32 }
33 /**
34  SQLite
35
36  1. openDB就可以开数据库,如果有,直接打开
37  如果没有,新建之后,再打开
38  2. createTable
39
40  =================================================
41  CoreData的步骤
42  1. 指定数据模型,将所有图形化设计的模型合而为一
43  2. 使用模型实例化存储调度,准备开始建表了
44  3. 指定数据库文件的准确位置
45
46  再次运行时:
47  1> 如果数据库存在,就直接打开
48  2> 如果不存在,创建之后再打开!
49  3> 如果修改了模型文件,同时数据库已经存在,运行会崩溃!
50
51  假设程序已经运行过,内部数据已经存在,提示我们选择数据的处理方式
52  1> 直接删除旧数据
53  2> 使用数据库工具,将原有数据导入到新的数据库中!
54
55  从而保证用户的数据不会丢失!
56
57  提示:此方法如果记不住,以后直接拷走!
58  */
59
60
61 - (void)openDB
62 {
63     //1.合并模型
64     NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
65     //2.创建NSPersistentStoreCoordinator(持久化存储助理)
66     NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
67
68     //2.1.数据库名
69     NSString *dbName = @"my.db";
70     //2.2.数据库URL
71     NSURL *url = [dbName appendDocumentDirURL];
72     NSLog(@"%@", url);
73     NSError *error = nil;
74     //3.添加持久化存储的数据库
75     [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
76     if (error == nil) {
77         NSLog(@"数据库建立成功");
78         //3.1.创建上下文
79         self.context = [[NSManagedObjectContext alloc] init];
80         _context.persistentStoreCoordinator = store;
81     }else{
82         NSLog(@"数据库创建失败");
83     }
84 }
85 @end

5.用NSFetchedResultsController来读取CoreData数据

  5.1. NSFetchedResultsControllers创建  

 1 // 查询请求(Person为实体类名)
 2     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
 3
 4     NSSortDescriptor *sordDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
 5
 6      // 按照用户姓名升序排序
 7     request.sortDescriptors = @[sordDescriptor];
 8     /**
 9      参数:
10      1> 查询请求
11      2> 数据库上下文
12      3> 表格中用于分组的字段名
13      4> 缓存名称
14      */
15     NSFetchedResultsController fetchedResultsController = [[NSFetchedResultsController alloc ]initWithFetchRequest:request managedObjectContext:[WKDataManager sharedDataManager].context sectionNameKeyPath:nil cacheName:nil];
16     // 设置代理
17     fetchedResultsController.delegate = self;

  5.2.NSFetchedResultsControllers执行查询

/执行请求抓取数据NSError *error = nil;if ([fetchedResultsController performFetch:&error]) {NSLog(@"查成功");}else{NSLog(@"查询失败 %@", error.localizedDescription);}

  5.3. NSFetchedResultsControllers取出每个分组中得数据数

//获取分区内的记录数[_fetchedResultsController.sections[0] numberOfObjects];

  5.4. NSFetchedResultsControllers 根据IndexPath取出查询结果

//用indexPath获取查询到的数据Person *person = [_fetchedResultsController objectAtIndexPath:indexPath];

  

转载于:https://www.cnblogs.com/pretty-guy/articles/4105005.html

OC CoreData简单使用相关推荐

  1. IOS CoreData 简单使用CURD

    2019独角兽企业重金招聘Python工程师标准>>> iOS在CoreData中简单封装了SQLite,让开发者不需要写sql语句就可以使用SQLite进行CURD操作. 要使用C ...

  2. OC中简单的界面设置

    首先是创建一个IOS的一个工程.然后我们在类:Appdelegate.m这个类的实现文件中添加内容.就可以在运行出来结果中显示一个多姿多彩的画面.在我们添加任何内容之前,运行出来的结果是一个黑屏,这意 ...

  3. iOS CoreData简单入门 - Swift版

    CoreData --- Swift 1,创建IOS项目并选择使用CoreData,选择语言Swift 2,打开项目目录 会有一项 CoreDataDemo.xcdatamodeld ,打开它,添加 ...

  4. CoreData介绍

    http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...

  5. cpu超频软件_Easy OC,装机小白进阶大神的好用软件

    在科技快速发展及消费升级的后浪不断推动下,人们对待事物不再满足于其传统的性能与价格的评估,开始向往更加便捷.全面.高效甚至富有想象创造力的产物,比如说对英特尔睿频加速Max技术3.0感兴趣的一般玩家. ...

  6. 选择python还是swift_iOS 开发选择OC还是Swift?

    在Swift出现之前,编写iPhone应用程序的主要编程语言是OC.Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,用于搭建基于苹果平台的应用程序.Swift是苹果主推的开发语 ...

  7. IOS学习路线(2014-05-08)

    2019独角兽企业重金招聘Python工程师标准>>> 黑马最新IOS就业班(14年7月-12月份)培训视频教程 第一阶段:UI基础(17天) 计算器案例 介绍类前缀.简单介绍新建工 ...

  8. swift 项目_如何对iOS项目进行静态分析

    随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析. 程序静态分析(Program Static Analysis)是 ...

  9. 如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量

    随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析. 程序静态分析(Program Static Analysis)是 ...

最新文章

  1. ubuntu服务器版编辑文件,Ubuntu 服务器版 18.04.4 固定 IP 设置
  2. Java基础--二维数组
  3. 【干货】周鸿祎谈雷军:能不能All In是一个核武器
  4. 【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)
  5. JTLParser-linux上jmeter的jtl文件二次分析
  6. 地铁售票系统设计思想及部分代码
  7. 良心推荐丨国庆7天长假,程序员最佳度假去处
  8. Makefile学习(一)[第二版]
  9. 电脑下边的任务栏不见了_Win7系统电脑任务栏经常自动消失不见的解决方法
  10. 有关Kubernetes监控的4大常见陷阱,注意避免!
  11. Leetcode Problem108
  12. 计算机固态硬盘序列号,固态硬盘检测工具ssdlife pro 2安装教程(附序列号)
  13. 比“虚幻4”还牛逼的游戏引擎 到底有多神奇?
  14. 运行 Android 的笔记本 Cosmo 已众筹超 130 万美元
  15. 计算机网络说明文,《Wi-Fi》初中说明文阅读题及答案
  16. FlashFXP命令行
  17. 怎么把音乐中的伴奏提取出来?这几个方法值得尝试一番
  18. YoloV5 训练长方形图像
  19. LINUX设置DNS
  20. Java编程那些事儿68——抽象类和接口(一)

热门文章

  1. Oracle 与 MySql 区别
  2. DataX实现oracle到oracle之间的数据传递
  3. spark-env.sh配置
  4. 数据库lib7第2, 3题(创建索引和触发器)
  5. centos LAMP菜鸟搭建过程
  6. mysql参数优化和硬件优化等分享
  7. URAL 1664 Pipeline Transportation
  8. if语句使用说明(Java)
  9. 最強御主人様!-Mighty My Master-全年龄汉化补丁(第二版修正)
  10. discuz mysql data_discuz调取数据库数据