我有一个关键字查询的结果集。返回的每个关键字对象与另一个实体具有多对多关系。 (称之为B)
我想知道有没有办法使用关键字resultset
并只找到B
实体的托管objectID而不必将它们拉入内存?目前,我一直这样做:
NSMutableArray *objIdList = [[NSMutableArray alloc] init];
NSArray *keywordResultSet = <results from initial keyword query>;
for ( Keyword *keyword in keywordResultSet )
{
B *mo = [keyword valueForKey: <relationship>];
[objIdlist addObject: [mo objectID]];
}
// additional sorting of result set
问题是,当我这样做时,它是超慢的。有没有办法只获取ObjectID?
答案 0 :(得分:0)
首先要问的是你是否需要objectIDs。很多Core Data新手认为objectID就像关系数据库中的键。他们不是。当您需要引用另一个持久性存储中的对象时,您只需要objectID。否则,他们对你没有多大帮助。我认为,鉴于您对Core Data的相对缺乏经验,您实际上首先需要获取objectID。
对于除objectID之外的任何其他属性,您可以通过属性执行提取并将结果类型设置为字典,从而生成轻量级提取,该提取仅返回包含所寻求的一个属性的值的字典数组。您无法使用objectID执行此操作,因为objectID不是严格来说是托管对象的属性,而是在特定持久性存储中引用它们。