2016-12-02 61 views
0

我有这个对象,它有一个名为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 ... 10前2,20前3等等。

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

+0

你必须切断数字,将其转换为“NSNumber”或“NSInteger”并按数字排序。 – shallowThought

回答

1

找到答案:只需更改localizedCompare:localizedStandardCompare:,它完美的工作。

0

尝试寻找最后的空白与rangeOfCharacter方法启用NSBackwardsSearch选项。有了这个范围,你可以划分你的字符串,并将包含名字的第一部分与包含第二部分的数字分开比较

+0

谢谢,但我找到了一个更简单的方法。看到我的答案。 – SpaceDog

+0

看起来好多了:) – Adamsor

相关问题