iOS-Code Data的快速体验
- Core Data 是iOS SDK 里的一个很强大的框架,允许程序员
以面向对象的方式储存和管理
数据。使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据 - Core Data是一种
持久化
技术,能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core
Data 不仅是一个加载、保存数据的框架,它还能和内存中的数据很好的共事
实体
和实体间关系
,以及查找符合某些条件实体的请求等内容0.171803秒左右
- NSManagedObjectModel 被管理对象模型
- NSPersistentStoreCoordinator 负责将数据保存到磁盘
- NSManagedObjectContext 负责管理模型对象的集合
- 打开系统默认创建的
XXX.xcdatamodeld
- 创建
实体 - Entity
类似与 SQLite 中的表,不过更像是 OC 中的类 - 选择
Add Entity
,建立如下图所示的实体
- 选择菜单项
Editor
-Create NSManagedObject SubClasses
,勾选所有看到的选项,两次Next
- 调整目录结构,调整完成之后的目录结构示意图如下图所示
#import "Person.h"
#import "AppDelegate.h"
#import "Person+CoreDataProperties.h"
@interface ViewController ()
@property (nonatomic, readonly) AppDelegate *appDelegate;
@property (nonatomic, readonly) NSManagedObjectContext *moc;
@end
@implementation ViewController
- (UIApplication *)appDelegate {
return [UIApplication sharedApplication].delegate;
}
-(NSManagedObjectContext *)moc {
return self.appDelegate.managedObjectContext;
}
currentPerson 方便后面使用
- 添加
insertPerson
方法
#pragma 插入一条数据
- (void)insertData {
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.moc];
person.name = @"ysc";
person.age = @100;
person.height = @180;
[self.appDelegate saveContext];
self.currentPerson = person;
}
- 在私有扩展中增加属性
@property (nonatomic) Person *currentPerson;
updatePerson
方法,并在 touch 方法中调用#pragma 更新数据
- (void)upDateData {
self.currentPerson.name = @"CSY";
self.currentPerson.age = @27;
[self.appDelegate saveContext];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self upDateData];
}
删除数据(也在touchesBegan中进行测试)
#pragma 删除
- (void)deleteData {
[self.moc deleteObject:self.currentPerson];
[self.appDelegate saveContext];
}
#pragma instertManyPerson
- (void)instertManyPerson{
NSTimeInterval start = CACurrentMediaTime();
for (int i = 0 ; i < 10000; i++) {
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.moc];
person.name = [@"zhangsan--" stringByAppendingFormat:@"%d",i] ;
person.age = @19;
person.height = @180;
}
[self.appDelegate saveContext];
NSTimeInterval margin = CACurrentMediaTime() - start;
NSLog(@"margin:%f",margin);
}
iOS-Code Data的快速体验的更多相关文章
- iOS-Code Data多线程的封装详解
Code Data 的单例封装: 很容易发现,系统生成的模版代码将Core Data 的基本的准备(貌似还挺复杂!)都放在 AppDelegate中了,可苹果公司为什么会这么做呢? ...
- (译)iOS Code Signing: 解惑
子龙山人 Learning,Sharing,Improving! (译)iOS Code Signing: 解惑 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切 ...
- Spring Cloud Data Flow初体验,以Local模式运行
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用.不仅 ...
- 微软发布 Pylance:改善 VS Code 中的 Python 体验
原标题:微软发布 Pylance:改善 VS Code 中的 Python 体验 来源:开源中国 微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS ...
- gitbook 入门教程之快速体验
本文主要介绍三种使用 gitbook 的方式,分别是 gitbook 命令行工具,Gitbook Editor 官方编辑器和 gitbook.com 官网. 总体来说,三种途径适合各自不同的人群,找到 ...
- 快速体验 Laravel 自带的注册、登录功能
快速体验 Laravel 自带的注册.登录功能 注册.登录经常是一件很伤脑筋的是,Laravel 提供了解决方案,可以直接使用它.试过之后,感觉真爽! 前提:本地已安装好了 PHP 运行环境.mysq ...
- 分布式_事务_01_2PC框架raincat快速体验1
一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...
- 分布式事务_01_2PC框架raincat快速体验
一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...
- Dev 日志 | 文章《快速体验知识图谱 OwnThink》中的技术问题
社区小伙伴反馈在实践文章<使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink>时,遇到了一些问题,Nebula Graph 将在本文对该文章中出现的问题进行 ...
随机推荐
- eclipse导入工程报错-项目或者文件有红叉的解决方案
1.Java的JDK或者Tomcat版本不一致 像这样的我们首先找到项目---->Build Path--->Config BuildPath,将找不到的JDK或者Tomcat进行删除和添 ...
- sh: react-scripts: command not found after running npm start
今天遇到一堆bug,从早上10点到现在8成的时间都像是浪费了..... https://stackoverflow.com/questions/40546231/sh-react-scripts-co ...
- 5.5 Go defer
5.5 Go defer 程序开发中经常要创建资源(数据库初始化连接,文件句柄,锁等),在程序执行完毕都必须得释放资源,Go提供了defer(延时机制)更方便.更及时的释放资源. 1.内置关键字def ...
- Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言介绍 微服务不是泥球小单体,而是具备更加清晰职责边界的完整一体的业务功能服务.领域驱动 ...
- F. Pathwalks动态开辟线段树
题意:n点m边,然后要求走最多的路,走路的时候经过的边权必须是严格递增. 解法1:传统的区间更新 解法2:发现区间更新只是对两个固定的点所延长形成的区间段,所以问题可以退化成单点更新单点查询. 然后动 ...
- java第十二周课后作业0523
1.编写一个程序,实现字符串大小写的转换并倒序输出.要求如下(1)使用for循环将字符串“ Hello world”从最后一个字符开始遍历(2)遍历的当前字符如果是大写字符,就使用 toLower C ...
- Web-Security-Learning
Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...
- 想学spark但是没有集群也没有数据?没关系,我来教你白嫖一个!
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第六篇文章,这篇文章会介绍一个免费的spark平台,我们可以基于这个平台做一些学习实验. databricks 今天要 ...
- Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...
- 强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm)
nvm是好用的Nodejs版本管理工具, 通过它可以方便地在本地调换Node版本. 2020-05-28 当前长期稳定版12.17.0,于是 nvm install 12.17.0 然后C:/nvm/ ...