代码之家  ›  专栏  ›  技术社区  ›  maxbareis

是否可以在Cocoa Touch中使用包含本地化字符串元素和正确数字的自定义对象对数组进行排序?

  •  0
  • maxbareis  · 技术社区  · 15 年前

    假设将Name和accountNo都作为NSStrings的类Account。我想按名称或accountNo对帐户数组进行排序。应本地化排序。

    如果我使用指南中描述的NSSortDescriptor,我可以选择通过 本地化CaseInsensitiveCompare: 但数字排序不正确(100在99之前排序)。我还没有找到触发选项的方法 NSNumericSearch 用于搜索。 这意味着我必须使用 SortedArrayusing函数 在链上的每个类中都有一个函数。它允许我使用正确的数值进行排序,但这不是本地化的,而且功能非常强大。

    如果您对这两个问题都有答案(具有数字正确排序的排序描述符或具有本地化和数字正确排序的排序函数),请同时向我提供这两个问题的答案

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   Dave DeLong    15 年前

    您可以创建不同的 NSSortDescriptor 对于要排序的每个属性。每个排序描述符可以使用不同的比较选择器。您的字符串可以使用 localizedCaseInsensitiveCompare: 方法,并且您的数字可以使用自定义排序选择器,例如 compareNumeric:

    然后您只需将类别添加到 NSString 定义一个名为 比较枚举: 这样做:

    - (NSComparisonResult) compareNumeric:(id)other {
      return [self compare:other options:NSNumericSearch];
    }