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 的核心数据中获取密钥