?
- (void)viewDidLoad {
[super viewDidLoad];
[self _creatTable];//插入数据
// [self _query];// 查询数据
// KVC很霸道,即使readonly通过kvc也可赋值,kvo精华
// Book * book = [[Book alloc]init];
//// book.name = @"book1";
// [book setValue:@"book2" forKey:@"name"];
// NSLog(@"%@",book.name);
}
#pragma mark - _query查询
- (void)_query{
// 初始化模型
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;
// 初始化查询请求
NSFetchRequest * request = [[NSFetchRequest alloc]initWithEntityName:@"Teacher"];
// 谓词过滤(查询条件)
#pragma mark '='
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@",@"zhangks"];
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = 'zhangks'"];
#pragma mark '>'
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age >10"];
// NSP
redicate * predict = [NSPredicate predicateWithFormat:@"name in %@",@[@"zhangsk",@"jack"]];
#pragma mark 'like'模糊查询
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name like %@",@"zha*"];
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name like %@",@"*zha*"];
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name like %@",@"*zha"];
#pragma mark 'and'和'&&'模糊查询
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@ and age = 19",@"zhangks"];
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@ && age = 19",@"zhangks"];
#pragma mark 'between'模糊查询
// 方式1
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age between {20,30}"];
// 方式2
// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age between %@",@[@"10",@"29"]];
// predict = [NSPredicate predicateWithFormat:predict.predicateFormat];
// request.predicate = predict;
// 数据排序 ascending=YES顺序,ascending=NO倒序
NSSortDescriptor * sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
request.sortDescriptors = @[sort];
NSError * error ;
// 执行查询语句
NSArray * array = [context executeFetchRequest:request error:&error];// 查询结果返回的是数组
// NSInteger count = [context countForFetchRequest:request error:&error];
// 查询结果的个数,返回nsinteger
// NSLog(@"%li",count);
/*
// // KVC方式获取
// for (NSManagedObject * student in array) {
// NSLog(@"————————————————————%@,%li",[student valueForKey:@"name"],[[student/Users/zhangxin/Desktop/OC/UI/5.19/5.21coreData/testtestcoredata/testtestcor