Xcode 8.1核心数据获取特定属性

时间:2016-11-21 14:33:13

标签: xcode core-data nsfetchrequest

我正在尝试使用以下代码从Core Data获取特定属性:

NSFetchRequest *test = [[NSFetchRequest alloc] init];
test.entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:self.currentMainContext];
test.predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
test.resultType = NSDictionaryResultType;
test.returnsDistinctResults = YES;
test.propertiesToFetch = @[@"property"];

NSArray *results = [self.currentMainContext executeFetchRequest:test error:error];

但我得到一个空数组。

如果我注释掉test.resultType = NSDictionaryResultType;,那么我会按预期返回数据库中所有实体的数组。 NSDictionaryResultType错误的是什么?

1 个答案:

答案 0 :(得分:1)

resultType NSDictionaryResultType获取请求有一个特点 includesPendingChanges的{​​{3}}表示:

  

如果值为NO,则获取请求不会检查未保存的更改,只返回与持久性存储中的谓词匹配的对象。

     

结果类型NSDictionaryResultType不支持值YES,包括计算聚合结果(例如max和min)。对于字典,从fetch返回的数组反映了持久存储中的当前状态,并且没有考虑上下文中的任何挂起的更改,插入或删除。

因此,请确保您已保存更改,或使用NSManagedObjectResultType