0

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

如果我按照指南中的描述使用 NSSortDescriptors,我可以选择将 localCaseInsensitiveCompare :传递给数组,但数字排序不正确(100 在 99 之前排序)。我还没有找到触发选项NSNumericSearch进行搜索的方法。这意味着我必须在链中的每个类中使用sortedArrayUsingFunctions和函数。它允许我使用正确的数值进行排序,但这不是本地化的并且非常实用。

如果您对这两个问题都有答案(SortDescriptors 具有数字正确排序或 sortFunctions 具有本地化和数字正确排序)请提供给我

谢谢

4

1 回答 1

1

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

然后,您可以添加一个类别来NSString定义一个调用的方法compareNumeric:来执行此操作:

- (NSComparisonResult) compareNumeric:(id)other {
  return [self compare:other options:NSNumericSearch];
}
于 2009-11-18T17:59:57.570 回答