我有一个基于核心数据的应用程序来管理一堆实体。我期望能够做到以下几点。使用核心数据检索唯一结果集
我有一个实体“SomeEntity”的属性:name,type,rank,foo1,foo2。
现在,如果我们严格按照SQL术语说话,SomeEntity有几行。我试图完成的是只检索可用的类型,即使每个实例可以有重复的类型。我也需要他们按照等级顺序归还。因此,在SQL,我正在寻找的是以下几点:
SELECT DISTINCT(type) ORDER BY rank ASC
这是我迄今多数民众赞成打破代码:与下面的崩溃
NSError *error = NULL;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setReturnsDistinctResults:YES];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"type", @"rank", nil]];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeEntity" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// sort by rank
NSSortDescriptor *rankDescriptor = [[NSSortDescriptor alloc] initWithKey:@"rank" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:rankDescriptor,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[rankDescriptor release];
NSArray *fetchResults = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
return fetchResults;
现在: Invalid keypath section passed to setPropertiesToFetch:
更新的例子。 属性有错误提取 – 2010-04-16 22:07:28
如果您要指定属性来获取@“type”和@“rank”,那么您将在两个属性中获得不同的属性。 您应该只指定@“type”属性 – 2010-04-16 22:08:54