0

我有一个 uid 列表,我需要使用这些 uid 获取 Core Data 对象:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uid IN %@", uids];
[request setPredicate:predicate];

现在,我想保持对象与列出的 uid 的顺序相同。因此,如果数组是 [3, 1, 2],那么我希望返回的对象也按该顺序排列。

不设置排序描述符不是一个选项NSFetchedResultsController,那么我应该将排序描述符设置为什么?

4

2 回答 2

0

持久存储中的对象是无序的。通常,您应该根据创建日期等属性在控制器或视图层施加顺序。如果您的数据中存在固有顺序,则需要对其进行显式建模。(https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdFAQ.html

于 2014-01-07T06:05:35.453 回答
0

可以在NSFetchRequest实例上设置排序描述符。

[request setSortDescriptors:descriptors];

wheredescriptors是一个NSSortDescriptor实例数组。

ANSSortDescriptor可以如下创建:

NSSortDescriptor *sortDescriptorForKey = [[NSSortDescriptor alloc] initWithKey:@"someKey" ascending:YES]; // YES or NO based on your needs

关于你的问题,顺序是uids什么?根据我的经验(直到现在我还没有想到这一点),你不能做你想要达到的目标。无论如何,您可以uidsNSFetchRequest.

也许有人可能有其他想法。

于 2013-01-04T13:50:46.600 回答