我有一个uid列表,我需要使用这些uid获取Core Data对象:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uid IN %@", uids];
[request setPredicate:predicate];
现在,我希望保持对象的顺序与列出的uid相同。因此,如果数组是[3,1,2],那么我希望返回的对象也按顺序排列。
不设置排序描述符不是NSFetchedResultsController
的选项,那么我应该将排序描述符设置为什么?
答案 0 :(得分:0)
可以在NSFetchRequest
实例上设置排序描述符。
[request setSortDescriptors:descriptors];
其中descriptors
是NSSortDescriptor
个实例的数组。
可以按如下方式创建NSSortDescriptor
:
NSSortDescriptor *sortDescriptorForKey = [[NSSortDescriptor alloc] initWithKey:@"someKey" ascending:YES]; // YES or NO based on your needs
关于您的问题,uids
的顺序是什么?根据我的经验(直到现在我还没有想到这一点)你不能做你想要达到的目标。无论如何,您只需复制uids
中NSFetchRequest
的描述符。
也许有人可以有其他想法。
答案 1 :(得分:0)
持久性存储中的对象是无序的。通常,您应该根据创建日期等属性在控制器或视图层强制执行订单。如果您的数据中存在固有的订单,则需要明确对其进行建模。(https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdFAQ.html)