[英]Sorting an Array of objects by localized description of a property that contains a number
我有一個具有名為nameEN
的屬性的對象,該屬性是該對象在英語中的名稱。 當此對象顯示在屏幕上時,如下所示:
NSLocalizedStringFromTable([myObject nameEN]);
換句話說,使用NSLocalizedStringFromTable
來本地化名稱。
話說回來,我在數組上有很多這些對象,我想按本地化名稱對該數組排序。
問題在於對象的名稱類似於House 1
, House 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 1
號House 10
號House 2
... 2之前的10、3號之前的20等。
如何使用NSComparisonResult
對此進行排序?
找到了答案:只要改變localizedCompare:
與localizedStandardCompare:
和它完美的作品。
嘗試使用啟用了NSBackwardsSearch選項的rangeOfCharacter方法查找最后一個空格。 在此范圍內,您可以分割字符串並分別比較包含名稱的第一部分和包含數字的第二部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.