iosCoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接(二)

2015-07-24 06:19:32 · 作者: · 浏览: 2
edata/ViewController.m valueForKey:@"age"] integerValue]); // } // // 子类KVC方式获取 // for (Student * student in array) { // NSLog(@"%li,%@",[student.age integerValue],[student valueForKey:@"name"]); // } *///KVC // 通过映射对象获取 for (Teacher * teacher in array) { NSLog(@"%@",teacher.name); } } #pragma mark _creatTable - (void)_creatTable{ // 初始化模型 NSManagedObjectModel * model = [NSManagedObjectModel mergedModelFromBundles:nil]; // 创建基础库协调器 NSPersistentStoreCoordinator * psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model]; // 获取沙盒路径 NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; path = [path stringByAppendingPathComponent:@"coreData.sqlite"]; NSLog(@"%@",path); NSURL * url = [[NSURL alloc]initFileURLWithPath:path]; //为协调器加载基础库路径和基础库类型 [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:nil]; // 创建上下文 NSManagedObjectContext * context = [[NSManagedObjectContext alloc]init]; context.persistentStoreCoordinator = psc; // // 插入数据 // NSManagedObject * student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:context]; // [student setValue:@"zhangks" forKey:@"name"]; // [student setValue:@(19) forKey:@"age"]; // // NSManagedObject * teacher = [NSEntityDescription insertNewObjectForEntityForName:@"Teacher" inManagedObjectContext:context]; // [teacher setValue:@"zhqo" forKey:@"name"]; // 插入数据 新建 NSManagedObject subclass类 ,自动根据model中e
ntity(实体)的表创建出类(继承自NSManagedObject,拥有NSManagedObject的属性和方法)所以直接用类名创建即可 // Student * student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:context]; // student.name = @"jack"; // student.age = @(29); // // // // Teacher * teacher = [NSEntityDescription insertNewObjectForEntityForName:@"Teacher" inManagedObjectContext:context]; // teacher.name = @"limei"; // 初始化查询请求 NSFetchRequest * request = [[NSFetchRequest alloc]initWithEntityName:@"Teacher"]; // 谓词过滤(查询条件) // NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = 'limei'"]; // request.predicate = predict; NSArray * array = [context executeFetchRequest:request error:nil]; for (Teacher * teacher in array) { Student * student1 = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:context]; student1.name = @"jim"; student1.age = @(12); student1.relationship = teacher; NSLog(@"%@,%@",teacher.name,student1.relationship.name); //// teacher.name = @"liuwu"; //// [context deleteObject:teacher]; // } // NSSet * deleteSet = [context deletedObjects];// 删除(未save),执行删除语句后未保存前,缓存中(库表未修改)存储的删除数据 // NSSet * insertSet = [context insertedObjects];//同上 // 保存 NSError * error; [context save:&error]; } ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联