2014-09-05 44 views
1

所以我有一個應用程序,我想按任意區域排序數據 - 而不是電話區域設置。 在我看來,iOS給中國人的排序順序是錯誤的(但我不知道中文),所以有人可以告訴我這是正確的嗎?使用NSLocale zh_Hans_CN在iOS上不正確的中文號碼排序順序?

我相信,無論對於簡化/ TRAD中國,數字1至10是:

一,二,三,四,五,六,七,八,九,十

這裏是我的測試代碼:

NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"zh_Hans_CN"]; 
NSArray *outOfOrder = @[@"十", @"七", @"一", @"二", @"四", @"三", @"五", @"六", @"八", @"九"]; 

NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) 
            { 
             return [(NSString *)obj1 compare:(NSString *)obj2 options:NSCaseInsensitiveSearch range:NSMakeRange(0, [(NSString *)obj1 length]) locale:locale]; 
            }]; 

NSArray *sorted = [outOfOrder sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameDescriptor]]; 

但數組排序出來是這樣的: 八, 二, 九, 六, 七, 三, 十, 四, 五, 一

當然中國應該有點像用1..9相當於其次是「字」字等其他語言?

+0

中國和日本的排序使用部首和筆畫的字符或發音音譯(拼音)。他們的意義不起作用。根據[文檔](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/SearchingStrings.html#//apple_ref/doc/uid/20000149-SW1),如果你想Finder喜歡排序傳遞'NSCaseInsensitiveSearch | NSNumericSearch | NSWidthInsensitiveSearch | NSForcedOrderingSearch'。儘管如此,這不會改變排序順序。 – orkoden 2014-09-05 12:41:41

回答

0

您可以使用NSLocale對中文進行排序。 iOS支持ICU alphabetic

漢歸類支持:

  • 拼音:ABCD ...
  • 衝程:1 2 3 ...
  • 部首衝程:自由基

下面是一些示例代碼供您參考:

NSLocale* strokeSortingLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"[email protected]=stroke"]; 
NSComparator compareByStroke = ^NSComparisonResult(id obj1, id obj2) { 
    return [obj1 compare:obj2 options:0 range:NSMakeRange(0, [obj1 length]) locale:strokeSortingLocale]; 
}; 

NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name_ch" ascending:YES comparator:compareByStroke]; 
NSArray* sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
NSArray* sortedArray = [self.result sortedArrayUsingDescriptors:sortDescriptors]; 
+0

因此,一位英語演講者會期望一個混合的數字/字母列表,如下所示:1本書街,2條蘋果路,5條樹路,蘋果車道,黑色大街,書店,斑馬線。中國的一位中國用戶看到街道地址列表中的視圖列表(如上面的但用中文),是否希望他們根據中風訂購?所以相當於2號蘋果公路可能會在列表中位居中,而不是第二位? – Brynjar 2016-05-18 13:36:17

+0

如果您按筆畫排序,您將看到筆畫順序列表,然後按字母順序排列英文。 – 2016-05-23 01:35:35

+0

我在評論中提出的問題是,中國用戶期望作爲一項規則是什麼?他們是否期望筆畫排序順序,因此數字字符不會出現在列表頂部?我認爲我原來的問題的答案是否定的,我看到的排序順序沒有錯,但我會接受你的答案,謝謝。 – Brynjar 2016-05-24 06:02:27