使用 NSSortDescriptor 对 NSNumber 进行排序
Posted
技术标签:
【中文标题】使用 NSSortDescriptor 对 NSNumber 进行排序【英文标题】:Sort NSNumber with NSSortDescriptor 【发布时间】:2013-09-15 02:06:49 【问题描述】:我有一个路由作为我的***核心数据实体。然后路线有位置。地点有一个
@property (nonatomic, retain) NSNumber *index;
我需要索引,因为我需要确保用户的路线是有序的。我想知道如何最好地对 Locations 实体进行排序。在我的 tableView 中,我显示了 Route 的名称。然后,当用户单击路线时,我会显示位置。我看到 NSSet 有
sortedArrayUsingDescriptors
但我不知道如何使用 sortDescriptor 对 NSNumber 进行排序。我见过人们只是使用类似的代码
sortedArrayUsingSelector:@selector(compare:) // or something like that
我可以编写一个简单的便捷方法来遍历 NSSet 并通过索引返回 Location 对象,但不确定是否有更好的方法。提前致谢!
【问题讨论】:
【参考方案1】:尝试使用它作为您的排序描述符:
NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES];
这将按位置对象的 NSNumber* 索引属性的值升序对您的位置对象进行排序。
【讨论】:
您不需要integerValue
,排序描述符与NSNumber
配合得很好。【参考方案2】:
您也可以这样做:[set allObjects]sortedArrayUsing...
并使用您想要的任何普通数组排序方法对其进行排序。
【讨论】:
【参考方案3】:更好的答案,使用index
,有时会崩溃。不知道为什么,还是用self
好了。
NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
【讨论】:
以上是关于使用 NSSortDescriptor 对 NSNumber 进行排序的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSSortDescriptor 对 NSNumber 进行排序
iPhone:无法对多对关系进行 NSSortDescriptor。如何排序?
使用 NSSortDescriptor 对一对多关系的 NSSet 类型的数据进行排序
NSSortDescriptor 按核心数据对多关系中的项目数排序
NSSortDescriptor 没有对我的 NSMutableArray 进行排序?
使用 NSSortDescriptor、Core Data 和 NSFetchedResultsController 按日期和名称对 UITableView 进行排序