如下图所示,Company
对象与一组FinancialMetric
个对象有关系。我想根据特定NSFetchedResultsController
(Company
的最新FinancialMetrics
和{{1}的值,对value
个date
个对象进行排序关系属性type
中的“收入”)。如果不将financialMetrics
对象加载到数组中然后对数组进行排序,是否可以这样做?我想保留Company
中的所有内容,就像使用NSFetchedResultsController
或name
这样的常规属性进行排序一样。
公司实体详情......
FinancialMetric实体详情......
答案 0 :(得分:2)
您无法按多对多关系的值进行排序。排序描述符不能同时过滤。
您的要求的另一个潜在问题是您必须进行额外的记帐,以确保,例如,同一公司不会重复相同的度量标准类型。
有几种方法。一种是您在公司实体中保留当前值,只要指标发生变化,您就可以自动更新。如果你只是有一些这样的情况,这是一个可行的策略。
另一种方法是在Metric
实体中明确表达您感兴趣的类型。假设您有12个不同的度量标准 - 只需命名它们并将它们作为属性添加到Metric
实体即可。然后,您可以通过一对一关系按特定指标进行排序,例如metric.revenue
。
最后,如果你真的想要保留抽象,你可以重构你提取的结果控制器并让它获取Metric
实体而不是Company
。您只需按type
进行过滤,按value
排序,然后使用metric.company.name
而不是company.name
填充表格视图单元格。