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

Toy*_*dor 3 iphone core-data nsfetchrequest ios ios6

我花了几个小时试图获取工作.我需要摆脱重复,所以我认为我可以遵循这个指南核心 - 数据 - 如何做一个选择 - 不同 但它总是给我一个空数组.

这是我的代码:

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);
Run Code Online (Sandbox Code Playgroud)

我没有错.我检查了NSPropertyDescription,它找到了我的财产.如果我评论出来:

request.resultType = NSDictionaryResultType;
Run Code Online (Sandbox Code Playgroud)

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

Toy*_*dor 7

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

  • 它位于Apple文档中,但隐藏在`setIncludesPendingChanges:`属性的文档中:"结果类型NSDictionaryResultType不支持值YES,包括计算聚合结果(如max和min).字典,从fetch返回的数组反映了持久存储中的当前状态,并没有考虑上下文中任何挂起的更改,插入或删除." (3认同)