数组我称之为“游戏”包含自定义类矿山的数组。每个“游戏”都包含一个NSDate。我想根据日期重新排列我的数组,以便它们按从最新到最旧的顺序排列。我怎么能这样做?另外,我的课程'游戏'包含一个NSString。我如何重新排序我的阵列,使游戏按字母顺序排列?如何通过重新排序和NSDates NSString的
1
A
回答
8
有一个真正简单的方法来做到这一点,而这与NSSortDescriptor
:
NSArray *games = ...; //your unsorted array of Game objects
NSSortDescriptor *sortByDateDescending = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObject:sortByDateDescending];
NSArray *sortedGames = [games sortedArrayUsingDescriptors:descriptors];
苹果已经写的排序代码。它只需要知道什么属性由。这是一个NSSortDescriptor
封装。一旦你得到了一个,只需将它提供给数组,然后数组给你一个排序的版本。 (或者,如果您有NSMutableArray
,则可以使用-sortUsingDescriptors:
就地对其进行排序)
2
该数组必须是一个NSMutableArray对象,然后才能重新排序它,纠正我,如果我错了。
为了你需要写在游戏类的自定义排序方法数组排序。喜欢的东西:
- (NSComparisonResult)compareGameByString:(Game *)otherGame
{ return [[self stringValue] caseInsensitiveCompare:[otherGame stringValue]]; }
然后:
[yourMutableArray sortUsingSelector:@selector(compareGameByString:)];
比较日期:
- (NSComparisonResult)compareByDate:(Game *)otherGame
{
if([otherGame isKindOfClass:[Game class]])
{
// NSdate has a convenient compare method
return [[self dateValue] compare:[otherGame dateValue]];
}
还要注意的是,在你的数组包含的对象,并没有这些选择做出反应,因此事件一个对象,它是不是一个游戏对象,你会得到一个例外,那您的应用程序可能会破坏
相关问题
- 1. 排序NSDates
- 2. 如何按字母顺序重新排序NSArray的元素(NSString)?
- 3. 通过NSDate排序包含NSObject的NSMutableArray包含NSDates
- 4. 排序NSDates的数组swift
- 5. 重新排序的数据表通过
- 6. 通过drag'n'drop重新排序Qt Listview
- 7. 通过NSDate重新排序动态UITableView
- 8. 通过拖动(如重新排序行)重新排列iPhone上的UITableView部分
- 9. 如何通过查找字典重新排序DataRow []的行?
- 10. 如何通过NSString属性对对象数组进行排序
- 11. 如何通过拖放重新排序kendo行
- 12. 如何重新排序NSMutableDictionaries
- 13. 如何重新排序表
- 14. 词典中的NSDates对字典排序
- 15. 将数组中的NSString转换为NSDates
- 16. 如何重新排序NSMutableDictionary到NSMutableArray?
- 17. 如何使用jQuery的排序重新排序排序父
- 18. 重新排序的UITableView和隐藏重排序控制
- 19. 通过自定义排序重新排列矩阵行
- 20. 通过svn的剧烈重新安排
- 21. UICollectionView重新排序
- 22. ChangeDetectionStrategy.OnPush和重新排序/ domchanges
- 23. 重新排序和memory_order_relaxed
- 24. 点击和重新排序
- 25. 排序NSString
- 26. 如何在NSString的基础上重新排序一个NSMutable数组?
- 27. MySQL触发器通过重新排序其值来更新列
- 28. 通过组合两个NSDates制作一个新的NSDate
- 29. 如何通过特定列的asc或desc命令重新排序文件
- 30. 如何通过持有物品来重新排序itemcontrol中的物品?
可以使用' - [NSArray sortedArrayUsingSelector:]'对常规数组进行排序。或者您可以使用'NSSortDescriptor',而不必担心编写比较代码。 – 2011-04-25 00:31:32