我有一个正确的设置NSFetchedResultsController
,它返回我想要的所有对象。但是,我想设置它以便它只返回ID
值唯一的对象,因为有几个重复的对象在数据库中具有相同的ID
但其他不同的属性。
我试着按照文档说的那样进行设置,最后得到了这个结果:
fetchRequest.returnsDistinctResults = YES;
fetchRequest.propertiesToFetch = @[@"eventCategoryID", @"eventName", @"eventID", @"eventPeopleCount", @"eventPrice", @"eventCrewCount", @"eventStartDateTS", @"eventImageURL", @"shouldShowFriends", @"isLiked"];
但是他们说你必须只使用NSDictionaryResultType
这个属性。而且,它给了我一个奇怪的崩溃。
有哪些方法可以使NSFetchedResultsController
返回的对象进行过滤,以便拥有ID等自定义唯一属性?
答案 0 :(得分:1)
所以你想找到ID
属性唯一的所有对象?那么是的,NSDictionaryResultType是要走的路。不过,我认为你需要两次。
首先,构建一个获取请求以检索所有ID
值,并计算每个值的计数。使用NSExpressionDescription将@count
函数应用于结果,并使用NSDictionaryResultType。按ID
分组。一步一步的例子是http://mattconnolly.wordpress.com/2012/06/21/ios-core-data-group-by-and-count-results/。
现在,您将拥有一个字典,其中包含ID
的密钥和ID
的计数。过滤该字典,以便您只有ID
s,其中计数为1,并仅提取那些ID
值。现在,您可以根据ID IN ...
单个ID
数组生成第二个获取请求。
有可能构建一个更复杂的原始提取请求,只返回count = 1 ID
s。