繁体   English   中英

通过对包含数字的属性的本地化描述对对象数组进行排序

[英]Sorting an Array of objects by localized description of a property that contains a number

我有一个具有名为nameEN的属性的对象,该属性是该对象在英语中的名称。 当此对象显示在屏幕上时,如下所示:

NSLocalizedStringFromTable([myObject nameEN]);

换句话说,使用NSLocalizedStringFromTable来本地化名称。

话说回来,我在数组上有很多这些对象,我想按本地化名称对该数组排序。

问题在于对象的名称类似于House 1House 2 ... House 10等。

当我使用以下代码对其进行排序时:

NSArray *sorted = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(MyOBject *p1, MyOBject *p2){
NSString *name1 = NSLocalizedStringFromTable([p1 nameEN], @"MyTable", nil);
NSString *name2 = NSLocalizedStringFromTable([p2 nameEN], @"MyTable", nil);
    return [name1 localizedCompare:name2];
  }];

我得到的顺序是House 1House 10House 2 ... 2之前的10、3号之前的20等。

如何使用NSComparisonResult对此进行排序?

找到了答案:只要改变localizedCompare:localizedStandardCompare:和它完美的作品。

尝试使用启用了NSBackwardsSearch选项的rangeOfCharacter方法查找最后一个空格。 在此范围内,您可以分割字符串并分别比较包含名称的第一部分和包含数字的第二部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM