iphone - 我尝试使用 setReturnsDistinctResults 通过 Core Data 获得不同的结果,但无法使其正常工作

标签 iphone objective-c 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];

最佳答案

我相信你也必须设置这个:

 [fetchRequest setResultType:NSDictionaryResultType];

让它发挥作用。

关于iphone - 我尝试使用 setReturnsDistinctResults 通过 Core Data 获得不同的结果,但无法使其正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3625101/

相关文章:

ios - xcode - 表格 View 下的进度条

swift - Xcode 11 无法识别核心数据实体

iphone - 应用ARC后仍然面临内存警告

ios - 在 ios 中为标签制作抖动效果?

ios - 此 Core Data 崩溃的可能原因是什么

iphone - 如何确保只能从我的代码访问我的 Web 服务?

iphone - 退出应用后重置亮度

ios - iOS 版 Google Plus api 获取好友列表

iphone - UISearchBar 高度不调整大小

objective-c - 确定 NSOutlineView 中选定行的部分