我的应用程序中有一个复杂的核心数据映射,在此图像中简化为此问题的相关内容:
我的问题是如何有效地排序Foo。让我们说在我的一个观点中,我有一个分段表,其中包含每个foo。这些部分是类别。 foo的每个部分(在一个类别中)都有一个排序。
现在,我正在使用此算法获取它们:
这对我来说似乎太低效了。当然,必须有一种更好的方法来进行这种常见类型的提取。任何人都可以建议一种新方法吗?
答案 0 :(得分:2)
我会使foo排序索引在各个类别中通用。然后,获取按索引排序的所有Foo对象。
如果您使用的是获取的结果控制器,则可以使用类别名称作为部分名称键路径。如果没有,您可以手动按类别名称对它们进行分区。
<强>更新强>
实际上,保持索引的方式,您可以获取所有Foo对象,然后按类别排序,然后按SortFoos索引排序。您仍然需要手动按类别名称对它们进行分区。
更新2
例如:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sorted_positions.category.name" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"sorted_positions.index" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, sortDescriptor2, nil];
[fetchRequest setSortDescriptors:sortDescriptors];