我尝试使用setReturnsDistinctResults来获取Core Data的不同结果,但无法使其正常工作

Ben*_*Ben 3 iphone core-data objective-c

我有一个名为"Themes"的Core Data实体,有4个属性.其中一个叫做"名字".此属性不是唯一的.我想检索数据中包含的所有名称的列表.

看来我需要使用获取请求的setReturnesDistinctResults:YES选项但我无法使其工作.下面的代码有什么问题吗?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// entity
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Themes" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];

// sort descriptor
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

// return distinct
NSDictionary *entityProperties = [entity propertiesByName];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"name"]]];
[fetchRequest setReturnsDistinctResults:YES];

NSError *error;
NSArray *fetchedObjects = [_context executeFetchRequest:fetchRequest error:&error];

for (Themes *theme in fetchedObjects) {
    NSLog(@"Theme = %@", theme.name);
}

[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
Run Code Online (Sandbox Code Playgroud)

小智 12

我相信你也必须这样做:

 [fetchRequest setResultType:NSDictionaryResultType];
Run Code Online (Sandbox Code Playgroud)

使它工作.