核心数据不同的提取给出空数组

时间:2012-09-24 15:57:39

标签: iphone ios core-data ios6 nsfetchrequest

我花了几个小时试图获取工作。我需要摆脱重复,所以我认为我可以遵循本指南core-data-how-to-do-a-select-distinct 但它总是给我一个空阵列。

这是我的代码:

NSFetchRequest *request = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"RBTag" inManagedObjectContext:[self context]];
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:sortDescriptor]];


NSError *error = nil;
NSArray *distincResults = [[self context] executeFetchRequest:request error:&error];


NSLog(@"Result: %@", distincResults);

我没有错误。我检查了NSPropertyDescription,它找到了我的财产。 如果我发表评论:

request.resultType = NSDictionaryResultType;

然后我得到了结果,但它并不明显。 =(

2 个答案:

答案 0 :(得分:7)

在任何指南或苹果文档中都没有,但经过谷歌搜索后我找到了这篇文章: bbarnheart 在将resultType更改为NSDictionaryResultType之前,必须将上下文保存到持久性存储。

答案 1 :(得分:1)

propertiesToFetch需要一组属性名称,但您将其设置为NSAttributeDescription数组。尝试

request.propertiesToFetch = [NSArray arrayWithObject:@"name"];

如果您未设置request.resultType = NSDictionaryResultType;,则会忽略propertiesToFetch