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