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

时间:2009-11-18 17:08:10

标签: cocoa nsarray nssortdescriptor

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

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

然后你可以添加一个类别NSString来定义一个名为compareNumeric:的方法来执行此操作:

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