码迷,mamicode.com
首页 > 其他好文 > 详细

Core Data的简单用法

时间:2016-05-08 12:00:26      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

  1 #import "ViewController.h"
  2 
  3 // 第一步:引入头文件AppDelegate
  4 #import "AppDelegate.h"
  5 #import "Person.h"
  6 #import "Car.h"
  7 
  8 @interface ViewController ()
  9 
 10 // 第二步:声明属性[管理对象上下文](SQLite中是声明一个存储路径的属性)
 11 @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
 12 
 13 @end
 14 
 15 @implementation ViewController
 16 
 17 // 懒加载
 18 - (NSManagedObjectContext *)managedObjectContext {
 19     
 20     // 因为在AppDelegate中已经实现过了,所以在这里是从AppDelegate中去获取
 21     if (!_managedObjectContext) {
 22         // 获取appDelegate对象
 23         AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
 24         _managedObjectContext = appDelegate.managedObjectContext;
 25     }
 26     return _managedObjectContext;
 27 }
 28 
 29 
 30 - (void)viewDidLoad {
 31     [super viewDidLoad];
 32     
 33     
 34     // 添加Person
 35     [self addPerson];
 36     
 37     
 38     // 删除Personf
 39 //    [self deletePerson];
 40     
 41     
 42     // 更改person信息
 43 //    [self updatePerson];
 44     
 45     
 46     // 查询所有人
 47     [self searchAllPerson];
 48     
 49     
 50     // 更改car的信息
 51     [self updateCar];
 52     
 53 }
 54 
 55 
 56 #pragma mark - 添加person
 57 - (void)addPerson {
 58     
 59     // 添加的步骤
 60     // 1.创建person实体对象,然后告诉context,让他做好准备,将这个对象添加到数据库中
 61     // 实例对象有两种方式,(初始化实体对象需要借助NSEntityDescription)
 62     // 第一种:(简单,用的多)
 63     Person *per = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
 64     
 65     // 第二种:(不常用)
 66     // 创建一个entity的实体
 67 //    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
 68 //    // 创建person对象
 69 //    Person *per = [[Person alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
 70     
 71     
 72     // 2.给对象属性赋值
 73     per.personName = @"卫庄";
 74     per.personGender = @"";
 75     per.personAge = @10;
 76     
 77     
 78     /**
 79      *  将车的对象通过实体描述类创建出来
 80      */
 81     Car *audiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
 82     
 83     audiCar.price = @300000;
 84     audiCar.color = @"白色";
 85     audiCar.brand = @"奥迪A7";
 86     
 87     
 88     Car *benchiCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.managedObjectContext];
 89     
 90     benchiCar.price = @500000;
 91     benchiCar.color = @"红色";
 92     benchiCar.brand = @"奔驰SUV";
 93     
 94     
 95     // 将两辆车放到集合中存储并进行赋值
 96     NSSet *carSet = [NSSet setWithObjects:audiCar, benchiCar, nil];
 97     per.personCar = carSet;
 98     
 99     
100     // 3.将person对象存入数据库
101     BOOL result = [_managedObjectContext save:nil];
102     
103     
104     // 4.判断是否插入成功
105     if (result) {
106         NSLog(@"添加数据成功");
107     } else {
108         NSLog(@"添加数据失败");
109     }
110     
111 }
112 
113 
114 #pragma mark - 删除person
115 - (void)deletePerson {
116     
117     // 1.实体化请求类【查询】
118     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
119     
120     
121     // 2.找到删除的条件(即根据什么去删除)(NSPredicate)
122     request.predicate = [NSPredicate predicateWithFormat:@"personName = ‘卫庄‘"];
123     
124     
125     // 3.由context根据删除条件的请求去具体进行删除操作
126     NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
127     
128     
129     // 4.遍历搜索出来的结果
130     for (Person *per in resultArray) {
131     
132         // 删除查询的相关的人的信息
133         [self.managedObjectContext deleteObject:per];
134         
135     }
136     
137     
138     // 5.进行删除结果的判断
139     BOOL result = [self.managedObjectContext save:nil];
140     
141     
142     // 6.判断结果
143     if (result) {
144         NSLog(@"删除成功");
145     } else {
146         NSLog(@"删除失败");
147     }
148     
149 }
150 
151 
152 #pragma mark - 更改person信息
153 - (void)updatePerson {
154     
155     // 1.实例化查询请求类
156     NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
157     
158     
159     // 2.设置查询条件
160     fetchRequest.predicate = [NSPredicate predicateWithFormat:@"personName = ‘卫庄‘"];
161     
162     
163     // 3.由管理对象上下文“context”,按照查询条件进行相关的操作
164     NSArray *resultArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
165     
166     
167     // 4.遍历结果更新数据
168     for (Person *per in resultArray) {
169         
170         // 更改相关的信息
171         per.personName = @"高月";
172         per.personGender = @"";
173         per.personAge = @20;
174         
175         NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
176     }
177     
178     
179     // 5.进行更新结果的判断
180     BOOL result = [self.managedObjectContext save:nil];
181     
182     
183     // 6.判断是否更新成功
184     if (result) {
185         NSLog(@"更新成功");
186     } else {
187         NSLog(@"更新失败");
188     }
189     
190 }
191 
192 
193 #pragma mark - 查询所有人
194 - (void)searchAllPerson {
195     
196     // 1.实例化查询请求
197     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
198     
199     
200     // 2.设置查询条件
201     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"personName LIKE ‘*月‘"];
202     request.predicate = predicate;
203     
204     
205     // 3.根据管理对象上下文“context”执行相关的操作
206     NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
207     
208     
209     // 4.遍历查询结果
210     for (Person *per in resultArray) {
211         
212         NSLog(@"name = %@, gender = %@, age = %@", per.personName, per.personGender, per.personAge);
213     }
214     
215     
216     // 5.进行查询结果的判断
217     BOOL result = [self.managedObjectContext save:nil];
218     
219     
220     // 6.判断是否查询成功
221     if (result) {
222         NSLog(@"查询成功");
223     } else {
224         NSLog(@"查询失败");
225     }
226 }
227 
228 
229 #pragma mark - 更新车的相关信息
230 - (void)updateCar {
231     
232     // 1.实例化查询请求
233     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Car"];
234     
235     
236     // 2.设置查询条件
237     request.predicate = [NSPredicate predicateWithFormat:@"brand CONTANS ‘奥迪A7‘"];
238     
239     
240     // 3.管理对象上下文按照查询条件去查询
241     NSArray *resultArray = [self.managedObjectContext executeFetchRequest:request error:nil];
242     
243     
244     // 4.遍历查询结果
245     for (Car *car in resultArray) {
246         
247         NSLog(@"price = %@, brand = %@, color = %@", car.price, car.brand, car.color);
248         car.brand = @"宝马X5";
249         
250     }
251     
252     
253     // 5.保存结果进行结果判断
254     if ([self.managedObjectContext save:nil]) {
255         NSLog(@"更新成功");
256     } else {
257         NSLog(@"更新失败");
258     }
259     
260 }
261 
262 
263 @end

 

Core Data的简单用法

标签:

原文地址:http://www.cnblogs.com/zhizunbao/p/5470041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!