2016-12-02 60 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

相關問題