OC CoreData简单使用
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简单使用相关推荐
- IOS CoreData 简单使用CURD
2019独角兽企业重金招聘Python工程师标准>>> iOS在CoreData中简单封装了SQLite,让开发者不需要写sql语句就可以使用SQLite进行CURD操作. 要使用C ...
- OC中简单的界面设置
首先是创建一个IOS的一个工程.然后我们在类:Appdelegate.m这个类的实现文件中添加内容.就可以在运行出来结果中显示一个多姿多彩的画面.在我们添加任何内容之前,运行出来的结果是一个黑屏,这意 ...
- iOS CoreData简单入门 - Swift版
CoreData --- Swift 1,创建IOS项目并选择使用CoreData,选择语言Swift 2,打开项目目录 会有一项 CoreDataDemo.xcdatamodeld ,打开它,添加 ...
- CoreData介绍
http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...
- cpu超频软件_Easy OC,装机小白进阶大神的好用软件
在科技快速发展及消费升级的后浪不断推动下,人们对待事物不再满足于其传统的性能与价格的评估,开始向往更加便捷.全面.高效甚至富有想象创造力的产物,比如说对英特尔睿频加速Max技术3.0感兴趣的一般玩家. ...
- 选择python还是swift_iOS 开发选择OC还是Swift?
在Swift出现之前,编写iPhone应用程序的主要编程语言是OC.Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,用于搭建基于苹果平台的应用程序.Swift是苹果主推的开发语 ...
- IOS学习路线(2014-05-08)
2019独角兽企业重金招聘Python工程师标准>>> 黑马最新IOS就业班(14年7月-12月份)培训视频教程 第一阶段:UI基础(17天) 计算器案例 介绍类前缀.简单介绍新建工 ...
- swift 项目_如何对iOS项目进行静态分析
随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析. 程序静态分析(Program Static Analysis)是 ...
- 如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量
随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析. 程序静态分析(Program Static Analysis)是 ...
最新文章
- ubuntu服务器版编辑文件,Ubuntu 服务器版 18.04.4 固定 IP 设置
- Java基础--二维数组
- 【干货】周鸿祎谈雷军:能不能All In是一个核武器
- 【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)
- JTLParser-linux上jmeter的jtl文件二次分析
- 地铁售票系统设计思想及部分代码
- 良心推荐丨国庆7天长假,程序员最佳度假去处
- Makefile学习(一)[第二版]
- 电脑下边的任务栏不见了_Win7系统电脑任务栏经常自动消失不见的解决方法
- 有关Kubernetes监控的4大常见陷阱,注意避免!
- Leetcode Problem108
- 计算机固态硬盘序列号,固态硬盘检测工具ssdlife pro 2安装教程(附序列号)
- 比“虚幻4”还牛逼的游戏引擎 到底有多神奇?
- 运行 Android 的笔记本 Cosmo 已众筹超 130 万美元
- 计算机网络说明文,《Wi-Fi》初中说明文阅读题及答案
- FlashFXP命令行
- 怎么把音乐中的伴奏提取出来?这几个方法值得尝试一番
- YoloV5 训练长方形图像
- LINUX设置DNS
- Java编程那些事儿68——抽象类和接口(一)