通过CoreData中的NSPredicate获取属性的所有值
这个问题听起来像一个新手,但我已经通过所有线程为我的解决方案,这仍然是我的问题。所以我有一个实体“LookUp”,它有一个属性“descrip”。 现在我的问题是我想获取属性'descrip'的所有值。通过CoreData中的NSPredicate获取属性的所有值
到现在我已经用这一切的疑问:
[NSPredicate predicateWithFormat:@"descrip == %@",[NSNumber numberWithInt:1]];
[NSPredicate predicateWithFormat:@"descrip == %@",@"descrip"];
[NSPredicate predicateWithFormat:@"descrip == %@",[NSNumber numberWithBool:YES]];
如果我火查询
[NSPredicate predicateWithFormat:@"descrip == %@",@"Art Gallery"];
它返回我与“艺术画廊”相关联的值的数组。 'descrip'属性包含250个值,如“Art Gallery”。
请帮帮忙。提前致谢。
NSPredicate是用来限制你的结果到坚持一定的限制的实体 - 就像你说的,记述== @“艺术画廊”将返回有decrip属性设置为所有实体美术馆。
就你而言,你不想限制查询中的实体。只需执行没有任何谓词的查询,并返回所有实体。现在只要遍历所有的实体,并获得记述的所有值成的NSMutableSet或的NSMutableDictionary,你有你记述值的列表。
感谢upvote并接受。 – iamsult 2012-03-12 09:34:58
您还可以设置请求
[request setResultType:NSDictionaryResultType];
[request setPropertiesToFetch:
[NSArray arrayWithObject: @"descrip"];
但你还是要循环的结果阵列上,以只抢记述值。
您可能想修改提取请求,而不是谓词。见"Fetching Distinct Values" in Apple's Core Data Snippets。
NSManagedObjectContext *context = // Get the context.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"LookUp" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
[request setPropertiesToFetch:@[@"descrip"]];
// Execute the fetch.
NSError *error;
id requestedValue = nil;
NSArray *objects = [context executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
}
您是否试过[NSPredicate predicateWithFormat:@“descrip ==%@”,@“%”];?你只想要descrip的独特价值? – Ravin 2012-03-11 15:28:50
它不适合我。 – iamsult 2012-03-12 05:52:04