假设将姓名为Account的帐户和accountNo都作为NSStrings。我想按名称或accountNo排序帐户数组。排序应该进行本地化。
如果我按照指南中的描述使用NSSortDescriptors,我可以选择将 localizedCaseInsensitiveCompare:传递给数组,但数字未正确排序(100在99之前排序)。我还没有找到触发选项 NSNumericSearch 进行搜索的方法。 这意味着我必须在链中的每个类中使用 sortedArrayUsingFunctions 和一个函数。它允许我使用正确的数值排序,但这不是本地化的,而且非常实用。
如果您对这两个问题都有答案(SortDescriptors具有数字正确排序或sortFunctions具有本地化和数字正确排序)请提供给我
由于
答案 0 :(得分:1)
您可以为要排序的每个媒体资源创建不同的NSSortDescriptor
。每个排序描述符可以使用不同的比较选择器。您的字符串可以使用localizedCaseInsensitiveCompare:
方法,您的数字可以使用自定义排序选择器,例如compareNumeric:
。
然后你可以添加一个类别NSString
来定义一个名为compareNumeric:
的方法来执行此操作:
- (NSComparisonResult) compareNumeric:(id)other {
return [self compare:other options:NSNumericSearch];
}