【问题标题】:sorting mutable array in alphabetical order按字母顺序排序可变数组
【发布时间】:2010-09-15 17:17:06
【问题描述】:

我有一个 nsmutable 数组,其中近 50 -60 个对象有不同的名称,我可以按字母顺序对这个数组进行排序吗(有可能吗,如何?)

【问题讨论】:

    标签: iphone objective-c xcode nsmutablearray nsarray


    【解决方案1】:

    对于像这样的简单排序,我喜欢使用排序描述符。

    假设您有一个可变对象数组,其类具有name NSString 属性:

    NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO];
    [myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];
    

    【讨论】:

    • 这将以“W”而不是“A”开头。如何以“A”开头?
    • 我得到了第一个大写字母和小写字母的升序。就像“A 到 Z”,然后是“a 到 z”。我需要做什么。
    【解决方案2】:

    当然,您可以为此使用sortUsingSelector:

    [myArray sortUsingSelector:@selector(compare:)];
    

    如果您的数组有自定义对象,那么您需要对这些对象实现排序方法:

    @implementation myCustomObject
      ...
    
      -(NSComparisonResult) compare:(myCustomObject*) other {
          return [self.name compare:other.name];
      }
    
    @end
    

    【讨论】:

    • 不错的单行答案(对于简单数组)。
    【解决方案3】:

    TechZen 的方法效果很好,但如果您使用 NSSortDescriptor 的 +sortDescriptorWithKey:ascending:selector:,将“localizedCompare:”作为选择器传递,效果会更好。这样,排序就本地化为用户的语言,这可以在字符串比较中产生很大的不同。

    【讨论】:

      【解决方案4】:
      myArray=[myDict keysSortedByValueUsingSelector:@selector(compare:)]; 
      

      简单地为我工作!

      【讨论】:

      • hmm .. 与之前的答案有什么区别?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多