NSSortDescriptor 有两个同样重要的键

Posted

技术标签:

【中文标题】NSSortDescriptor 有两个同样重要的键【英文标题】:NSSortDescriptor with two equally important keys 【发布时间】:2013-07-23 12:52:24 【问题描述】:

我正在为我的实体构造一个 NSFetchedResultsController,它有两个属性,比如说一个 shortName 和一个 longName。所有托管对象都只有 shortName 或 longName。

如何同时基于两个属性(或者更确切地说是非空属性)对对象进行排序?

显然以下方法不适用于我的情况:

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"shortName" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"longName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil];

【问题讨论】:

【参考方案1】:

这很有趣,但我几乎可以肯定这是不可能的。如果没有 longName,只需将 shortName 分配给 longName 属性,同时插入到您的数据库对我来说是最好的解决方案,只需按 longName 进行排序。

【讨论】:

谢谢,这可能是一个选择,但我相信应该有一个更优雅的解决方案 也许你可以尝试继承 NSFetchedResultsController,这会很优雅,但如果有一个简单的解决方案,我也很好奇

以上是关于NSSortDescriptor 有两个同样重要的键的主要内容,如果未能解决你的问题,请参考以下文章

NSSortDescriptor 对 Core Data NSSet 对象进行排序的最有效方法

NSSortDescriptor 从 Swift 4 的核心数据中获取密钥

NSSortDescriptor 与关系

创建 NSSortDescriptor

使用 NSSortDescriptor 对 NSNumber 进行排序

带有自定义 NSSortDescriptor 的 NSFetchedResultsController