#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. 玩转PowerShell第一节——【后台任务处理】-技术&分享

    概述 相信大家对后台任务处理不陌生,比如.Net的后台线程处理,Java的线程处理等等. 而当我们用PowerShell这个强大的工具时怎么样开启后台任务呢,以及怎样处理这些任务呢,本篇将会告诉你Po ...

  2. ServiceStack Redis客户端的bug

    client.Set("key", 0); 当使用上面的语句设置 真正存入redis的却是一个空白字符,而不是0 跟了一下源码,发现 private static byte[] T ...

  3. [git]git忽略文件

    可以通过创建~/.gitignore_global并添加到git全局配置以减少每层目录的规则重复定义.使用命令git config --global core.excludesfile ~/.giti ...

  4. Velocity魔法堂系列一:入门示例

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  5. Java魔法堂:打包知识点之META-INF/MAINFEST.MF

    一.前言     通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF ...

  6. mysqldump: Couldn't execute 'show table status '解决方法

    执行:[root@host2 lamp]# mysqldump -F -R -E --master-data=2   -p -A --single-transaction 在控制台端出现 mysqld ...

  7. Spring应用——对 JDBC 的支持

    一.说明 1.Spring JDBC 对原始的 JDBC 进行了封装,使其更加易用. 2.JdbcTemplate 作为 Spring JDBC 的核心,为不同类型的 JDBC 操作提供了模板方法. ...

  8. PHP 表单验证--安全性--小记

    HTML 表单数据进行适当的验证对于防范黑客和垃圾邮件很重要! -------------------------------------------------------------------- ...

  9. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  10. wcf 双工

    服务器 [ServiceContract(Namespace="http://www.artech.com/", CallbackContract = typeof(ICallba ...