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 将在本文对该文章中出现的问题进行 ...
随机推荐
- 开源电影项目源码案例重磅分析,一套代码发布小程序、APP平台多个平台
uni-app-Video GitHub地址:https://github.com/Tzlibai/uni-app-video 一个优秀的uni-app案例,旨在帮助大家更快的上手uni-app,共同 ...
- C++语言字符串处理函数
C++语言提供了比C语言更丰富的字符串处理功能.它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作.使用这些现成的功能可以大大减少我们的编程的负担. 输入和输出的字符串函数,如p ...
- 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉
机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...
- python3.x 基础二:内置函数
自带的函数可以非常简单快捷的实现某些功能, 比如产生一个序列,可以用循环实现: count = 0 while count < 10: print(count) count+=1 但其实用ran ...
- 使用Html5对图片加水印及多图合成
转载请注明原地址: ...
- C# 数据操作系列 - 12 NHibernate的增删改查
0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前 ...
- 王艳 201771010127《面向对象程序设计(java)》第三周学习总结
一:理论知识总结: 第一章:主要概述了java相比其他程序设计语言(如C语言.c++)之间的不同性能.为我们揭示了java这种语言的设计初衷一节截至目前java语言达到的效果.另外,还简要介绍了jav ...
- 21-8 数据检索2 top和distinct
--distinct关键字,根据已经查询出的结果然后去除重复 select distinct * from TblStudent --Top(一般会配合order by一起使用) ---------- ...
- Kubernetes学习笔记(四):服务
服务介绍 服务是一种为一组相同功能的pod提供单一不变接入点的资源.当服务存在时,他的IP和端口不会改变.客户端通过IP和端口建立连接,这些连接会被路由到任何一个pod上.如此,客户端不需要知道每个单 ...
- Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn)
Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn) 发布时间:2020-05-2413次浏览 前言 现在市面上又许多比较成熟的博客平台,例如:CSDN,博客园,新浪博客等!对于 ...