簡體   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