Xcode 8.1 核心数据获取特定属性
Posted
技术标签:
【中文标题】Xcode 8.1 核心数据获取特定属性【英文标题】:Xcode 8.1 core data fetching specific properties 【发布时间】:2016-11-21 14:33:13 【问题描述】:我正在尝试使用以下代码从 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】:NSDictionaryResultType
的 resultType
的提取请求具有一个特殊性。includesPendingChanges
的Documentation 声明:
如果值为 NO,则获取请求不检查未保存的更改,而仅返回与持久存储中的谓词匹配的对象。
不支持 YES 值与结果类型 NSDictionaryResultType 结合使用,包括聚合结果的计算(例如 max 和 min)。对于字典,从 fetch 返回的数组反映了持久存储中的当前状态,并且不考虑上下文中的任何未决更改、插入或删除。
所以请确保您已保存更改,或使用NSManagedObjectResultType
。
【讨论】:
以上是关于Xcode 8.1 核心数据获取特定属性的主要内容,如果未能解决你的问题,请参考以下文章