#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的简单用法的更多相关文章

  1. Core Data 的简单使用

    认识cocoa Data在ios开发中的环境情况. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/f ...

  2. Core Data 学习简单整理01

    Core Data是苹果针对Mac和iOS平台开发的一个框架, 通过CoreData可以在本地生成数据库sqlite,提供了ORM的功能,将对象和数据模型相互转换 . 通过Core Data管理和操作 ...

  3. iphone数据存储之-- Core Data的使用(一)

    http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html 一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终 ...

  4. (转)iphone数据存储之-- Core Data的使用

    原文:http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html iphone数据存储之-- Core Data的使用(一)   一. ...

  5. Core Data (2)-备用

    1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中 ...

  6. IOS 数据存储之 Core Data详解

    Core Date是ios3.0后引入的数据持久化解决方案,它是是苹果官方推荐使用的,不需要借助第三方框架.Core Date实际上是对SQLite的封装,提供了更高级的持久化方式.在对数据库操作时, ...

  7. 数据存储-- Core Data的使用(一)

    一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...

  8. iphone数据存储之-- Core Data的使用

    一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...

  9. IOS 数据存储之 Core Data具体解释

    Core Date是ios3.0后引入的数据持久化解决方式,它是是苹果官方推荐使用的.不须要借助第三方框架.Core Date实际上是对SQLite的封装.提供了更高级的持久化方式.在对数据库操作时, ...

随机推荐

  1. C#基础课程之六(临时表)DataTable使用方法

    DataTable 用法:赋取值操作,及报错情况 dataTable.Columns.Add("Name"); //Columns 对象获取该集合的全部列,添加列名. 默认stri ...

  2. GNU GCC 扩展属性

    http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html constructor destructor constructor (prior ...

  3. 【翻译】C# Tips & Tricks: Weak References - When and How to Use Them

    原文:C# Tips & Tricks: Weak References - When and How to Use Them Sometimes you have an object whi ...

  4. Java定位CPU使用高问题--转载

    原文地址:http://www.cnblogs.com/guoyuqiangf8/p/3545687.html 1.TOP命令,查询消耗CPU高的进程号 PID,并记录下来,按下键盘"H&q ...

  5. 帮助你在 Photoshop 中轻松实现长阴影效果的工具

    扁平化设计正被用于各个主流的移动操作系统以及许多流行的网站,这是一个不断上升的趋势. 这种趋势有其分支,其中之一是“长阴影 “的效果在元素上的使用. 采用角度为 45 度的投影,给对象添加了一份立体感 ...

  6. IOS开发UI基础UISegment属性

    UISegment属性 1.segmentedControlStyle设置segment的显示样式.typedef NS_ENUM(NSInteger, UISegmentedControlStyle ...

  7. Redis设计与实现-主从、哨兵与集群

    主从 从机使用slaveof 命令来复制主机的缓存数据,包括同步sync与命令传播两个操作: 从机同步sync命令给主机,主机收到后执行需要耗费大量cpu.内存和磁盘IO资源的bgsave命令来生成r ...

  8. Requested registry access is not allowed(不允许所请求的注册表访问权)

    尝试创建自定义事件日志时,将会收到“Requested registry access is not allowed(不允许所请求的注册表访问权)”错误消息 EventLog.CreateEventS ...

  9. ASP.NET的简单与面向对象开发

    ASP.NET开发,一开始是为了超赶时间完成任务,只能把功能实现即可.如下面一个功能,在网页中有一个铵钮,用户点一点切换网页的图片,再点一点又切换回来.我们要怎样做?在铵钮事件中去变更图片的路径即可. ...

  10. 【jQuery基础学习】10 简单了解jQuery Mobile及jQuery各个级别版本的变化

    关于 jQuery Mobile jQuery Mobile是为了填补jQuery在移动设备应用上的一个新项目.它应用了HTML5和CSS3. 主要特性 基于jQuery构建. 采用与jQuery一致 ...