2013-03-06 56 views
0

如何通过请求要检查的特定属性来获取一组唯一的托管对象。使用属性获取NSManagedObjects的集合

例如一些人的对象,我想检索所有的唯一名称,一个管理对象为每个唯一的名称,按名称排序。

回答

3

怎么样使用请求这样

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext]; 
request.entity = entity; 
request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]]; 
request.returnsDistinctResults = YES; 
request.resultType = NSDictionaryResultType; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptors]]; 

NSError *error = nil; 
NSArray *distinctResults = [managedObjectContext executeFetchRequest:request error:&error]; 
// Use distinctResults 

尝试,让我知道。

P.S.代码已启用ARC。如果您不使用它,必要时请致电release

+0

@ Helium3另请参见http://stackoverflow.com/questions/2785844/how-to-fetch-distinct-values-in-core-data – 2013-03-06 21:41:53

+0

该返回是否将NSManagedObjects与关联的数据读取错误。例如。是否可以使用object.someProperty访问NSManagedObject的其他属性。另外,如何将propertiesToFetch应用于仅搜索与其他属性匹配的对象中的属性,例如年龄和性别。那么,只为特定年龄和性别的人提取独特的名字? – jarryd 2013-03-06 22:06:23

+0

@ Helium3如果您想使用其他任何属性,您必须将其添加到您在'propertiesToFetch'属性中设置的数组中。 – 2013-03-06 22:17:04