Core Data的简单用法
- #import "ViewController.h"
- // 第一步:引入头文件AppDelegate
- #import "AppDelegate.h"
- #import "Person.h"
- #import "Car.h"
- @interface ViewController ()
- // 第二步:声明属性[管理对象上下文](SQLite中是声明一个存储路径的属性)
- @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
- @end
- @implementation ViewController
- // 懒加载
- - (NSManagedObjectContext *)managedObjectContext {
- // 因为在AppDelegate中已经实现过了,所以在这里是从AppDelegate中去获取
- if (!_managedObjectContext) {
- // 获取appDelegate对象
- AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
- _managedObjectContext = appDelegate.managedObjectContext;
- }
- return _managedObjectContext;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- // 添加Person
- [self addPerson];
- // 删除Personf
- // [self deletePerson];
- // 更改person信息
- // [self updatePerson];
- // 查询所有人
- [self searchAllPerson];
- // 更改car的信息
- [self updateCar];
- }
- #pragma mark - 添加person
- - (void)addPerson {
- // 添加的步骤
- // 1.创建person实体对象,然后告诉context,让他做好准备,将这个对象添加到数据库中
- // 实例对象有两种方式,(初始化实体对象需要借助NSEntityDescription)
- // 第一种:(简单,用的多)
- Person *per = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- // 第二种:(不常用)
- // 创建一个entity的实体
- // NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
- // // 创建person对象
- // Person *per = [[Person alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
- // 2.给对象属性赋值
- per.personName = @"卫庄";
- per.personGender = @"男";
- per.personAge = @;
- /**
- * 将车的对象通过实体描述类创建出来
- */
- Car *audiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
- audiCar.price = @;
- audiCar.color = @"白色";
- audiCar.brand = @"奥迪A7";
- Car *benchiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
- benchiCar.price = @;
- benchiCar.color = @"红色";
- benchiCar.brand = @"奔驰SUV";
- // 将两辆车放到集合中存储并进行赋值
- NSSet *carSet = [NSSet setWithObjects:audiCar, benchiCar, nil];
- per.personCar = carSet;
- // 3.将person对象存入数据库
- BOOL result = [_managedObjectContext save:nil];
- // 4.判断是否插入成功
- if (result) {
- NSLog(@"添加数据成功");
- } else {
- NSLog(@"添加数据失败");
- }
- }
- #pragma mark - 删除person
- - (void)deletePerson {
- // 1.实体化请求类【查询】
- NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
- // 2.找到删除的条件(即根据什么去删除)(NSPredicate)
- request.predicate = [NSPredicate predicateWithFormat:@"personName = '卫庄'"];
- // 3.由context根据删除条件的请求去具体进行删除操作
- NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
- // 4.遍历搜索出来的结果
- for (Person *per in resultArray) {
- // 删除查询的相关的人的信息
- [self.managedObjectContext deleteObject:per];
- }
- // 5.进行删除结果的判断
- BOOL result = [self.managedObjectContext save:nil];
- // 6.判断结果
- if (result) {
- NSLog(@"删除成功");
- } else {
- NSLog(@"删除失败");
- }
- }
- #pragma mark - 更改person信息
- - (void)updatePerson {
- // 1.实例化查询请求类
- NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
- // 2.设置查询条件
- fetchRequest.predicate = [NSPredicate predicateWithFormat:@"personName = '卫庄'"];
- // 3.由管理对象上下文“context”,按照查询条件进行相关的操作
- NSArray *resultArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
- // 4.遍历结果更新数据
- for (Person *per in resultArray) {
- // 更改相关的信息
- per.personName = @"高月";
- per.personGender = @"女";
- per.personAge = @;
- NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
- }
- // 5.进行更新结果的判断
- BOOL result = [self.managedObjectContext save:nil];
- // 6.判断是否更新成功
- if (result) {
- NSLog(@"更新成功");
- } else {
- NSLog(@"更新失败");
- }
- }
- #pragma mark - 查询所有人
- - (void)searchAllPerson {
- // 1.实例化查询请求
- NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
- // 2.设置查询条件
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"personName LIKE '*月'"];
- request.predicate = predicate;
- // 3.根据管理对象上下文“context”执行相关的操作
- NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
- // 4.遍历查询结果
- for (Person *per in resultArray) {
- NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
- }
- // 5.进行查询结果的判断
- BOOL result = [self.managedObjectContext save:nil];
- // 6.判断是否查询成功
- if (result) {
- NSLog(@"查询成功");
- } else {
- NSLog(@"查询失败");
- }
- }
- #pragma mark - 更新车的相关信息
- - (void)updateCar {
- // 1.实例化查询请求
- NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Car"];
- // 2.设置查询条件
- request.predicate = [NSPredicate predicateWithFormat:@"brand CONTANS '奥迪A7'"];
- // 3.管理对象上下文按照查询条件去查询
- NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
- // 4.遍历查询结果
- for (Car *car in resultArray) {
- NSLog(@"price = %@, brand = %@, color = %@", car.price, car.brand, car.color);
- car.brand = @"宝马X5";
- }
- // 5.保存结果进行结果判断
- if ([self.managedObjectContext save:nil]) {
- NSLog(@"更新成功");
- } else {
- NSLog(@"更新失败");
- }
- }
- @end
Core Data的简单用法的更多相关文章
- Core Data 的简单使用
认识cocoa Data在ios开发中的环境情况. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/f ...
- Core Data 学习简单整理01
Core Data是苹果针对Mac和iOS平台开发的一个框架, 通过CoreData可以在本地生成数据库sqlite,提供了ORM的功能,将对象和数据模型相互转换 . 通过Core Data管理和操作 ...
- iphone数据存储之-- Core Data的使用(一)
http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html 一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终 ...
- (转)iphone数据存储之-- Core Data的使用
原文:http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html iphone数据存储之-- Core Data的使用(一) 一. ...
- Core Data (2)-备用
1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中 ...
- IOS 数据存储之 Core Data详解
Core Date是ios3.0后引入的数据持久化解决方案,它是是苹果官方推荐使用的,不需要借助第三方框架.Core Date实际上是对SQLite的封装,提供了更高级的持久化方式.在对数据库操作时, ...
- 数据存储-- Core Data的使用(一)
一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...
- iphone数据存储之-- Core Data的使用
一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...
- IOS 数据存储之 Core Data具体解释
Core Date是ios3.0后引入的数据持久化解决方式,它是是苹果官方推荐使用的.不须要借助第三方框架.Core Date实际上是对SQLite的封装.提供了更高级的持久化方式.在对数据库操作时, ...
随机推荐
- [转载]浅谈组策略设置IE受信任站点
在企业中,通常会有一些业务系统,要求必须加入到客户端IE受信任站点,才能完全正常运行访问,在没有域的情况下,可能要通过管理员手动设置,或者通过其它网络推送方法来设置. 有了域之后,这项工作就可以很好的 ...
- Win7以上 32/64位系统隐藏托盘图标
前两天有朋友找我,让帮忙写个小工具,隐藏windows的托盘图标,想想最近在家也不想做太复杂的事,也好几年没写过windows上的小工具了,就答应了.想来挺简单的事,没想到还是有点小插曲的.特地来博客 ...
- 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析
当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...
- jquery.idTabs使用方法
idTabs是基于Jquery编写封装的一个插件,主要用于实现选项卡功能,它操作简单,只需到官网:http://www.sunsean.com/idTabs/下载插件JS脚本文件,并引用到网站中即可 ...
- awk引用外部变量及调用系统命令方法
目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...
- [ShortCut] IE10快捷键
适用范围: Windows 8 操作步骤: 1.快速输入网址: “Ctrl+L”.“F4”:在IE10下按下“Ctrl+L”快捷键,可以直接将光标转到浏览器地址栏(注:地址栏中的网址会被选中),可以直 ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- sql添加合计
在项目中发现有这样的写法 SELECT ZoneID,CountSQAZFZSBJZ3G+CountSQGZJRJZSL3G AS column1FROM G3MulticarrierSiteCove ...
- 硅谷新闻4--解决页签手指按下从左到右滑动的bug
有一种方法可以阻止父层的View截获touch事件,就是调用 getParent().requestDisallowInterceptTouchEvent(true);方法.一旦底层View收到tou ...
- mysql 5.7.15发布
2016-09-06,mysql发布了5.7更新5.7.15,修复的bug数项目之前的版本已经大大减少,说明越来越稳定了.估计再过三四个版本,就会有很多公司开始考虑生产中使用了.