【问题标题】:sort an NSMutableArray that contains NSString objects [duplicate]对包含 NSString 对象的 NSMutableArray 进行排序
【发布时间】:2013-11-08 13:45:00
【问题描述】:

我是objective-c,ios的新手。 我正在尝试按字母顺序对一个名为 filtersList 的 NSMutableArray 进行排序,其中包含 NSString 类型的对象。

所以如果我的可变数组包含:[Mary, Bill, John] 我想要 [Bill, Mary, John]

我做了以下事情:

[filteredList sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

但我没有看到任何变化。我确实阅读并尝试了其他解决方案,例如 compare: 而不是localizedCaseInsensitiveCompare 但仍然没有。

【问题讨论】:

标签: ios iphone objective-c sorting


【解决方案1】:

更新

 NSArray *sortedArray =[unSortedArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];//unSortedArray is NSMutableArray
unSortedArray = [[NSMutableArray alloc]initWithArray:sortedArray];

【讨论】:

  • 我拥有的数组是一个 NSMutableArray。请您根据要求更改您的代码吗?
  • unSortedArray 是 NSMutableArray 你只需将排序后的值存储在 NSArray (sortedArray) 中。
  • @justME:我更新了我的代码
  • 由于某些原因,tableview 以降序模式显示元素 - 而不是 A、B、C 我有:C、B、A。你知道为什么吗?
  • @justME:你如何将值添加到数组中......告诉我
【解决方案2】:

我会这样做:

NSArray *sortedArray = [filteredList sortedArrayUsingComparator:^(NSString *str1, NSString *str2) {
    return (NSComparisonResult)[str1 compare:str2];
}];
filteredList = [sortedArray mutableCopy];

【讨论】:

  • 我检查了 sortedArray 的元素是否在正确的位置。他们是,但过滤列表仍然没有在我的表格视图中弹出。
  • 不行怎么办?顺序不对?
  • 是的,它们在我的 tableView 中没有以正确的顺序显示
  • 您必须在显示表格视图之前对数组进行排序。否则你不使用排序数组
【解决方案3】:

请参考以下代码:-

filteredList = (NSMutableArray*)[filteredList sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多