您的位置:首页 > 其它

使用CoreData查询数据:谓词过滤,排序操作

2015-05-21 20:22 429 查看
- (void)_query
{

// 初始化查询请求

// NSFetchRequest * request = [[NSFetchRequest alloc] initWithEntityName:@"Student"];

// 调用的是上下文的方法

// 方法一

// 通过父类的KVC方式查询

// NSArray * array = [self.context executeFetchRequest:request error:nil];

// for (NSManagedObject * student in array)

// {

// NSLog(@"%@--- %i", [student valueForKey:@"name"], [[student valueForKey:@"age"] intValue]);

// }

// 方法二

// 通过映射对象获取(常用)

// NSArray * array = [self.context executeFetchRequest:request error:nil];

// for (Student * student in array)

// {

// NSLog(@"%@--- %i", student.name, [student.age intValue]);

// }

//// 方法三

//// 通过子类的KVC方式查询

// NSArray * array = [self.context executeFetchRequest:request error:nil];

// for (Student * student in array)

// {

// NSLog(@"%@--- %i", [student valueForKey:@"name"], [[student valueForKey:@"age"] intValue]);

// }

// 谓词过滤

// 过滤其他查询

// 1、<,>,=

//// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = lisi"];//错误写法

//// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@", @"lisi"];//正确写法

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = 'lisi'"];//正确写法

// request.predicate = predict;//不赋值就是对全部内容操作

// 2.like

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name like %@", @"*lisi*"];//注意使用的是*

// request.predicate = predict;

// 3.and,or

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = 'lisi' and age = 56"];

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@ and age = %i", @"lisi", 56];

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name = %@ && age = %i", @"lisi", 56];

// request.predicate = predict;

// 4.in

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"name in%@", @[@"lisi", @"zhangsanlisi"]];

// request.predicate = predict;

// 5.between

// 使用字符串的方式

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age between {0,120}"];

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age BETWEEN {0,120}"];

// 或者使用数组的方式

// NSPredicate * predict = [NSPredicate predicateWithFormat:@"age between %@", @[@22, @24]];//两个数倒过来就查不出来了

// predict = [NSPredicate predicateWithFormat:predict.predicateFormat];

// NSLog(@"%@", predict.predicateFormat);//打印predict的字符串

// request.predicate = predict;

//

// 排序

// NSSortDescriptor * sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

// request.sortDescriptors = @[sort];//数组中可以放置多个sort,一般就用一个

// 打印返回的结果

// NSArray * array = [self.context executeFetchRequest:request error:nil];

// for (Student * student in array) {

// NSLog(@"%@-- %i", student.name, [student.age intValue]);

// }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐