标签:
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
标签:
原文地址:http://www.cnblogs.com/zhizunbao/p/5470041.html