2015-09-30 50 views
2
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)]; 

[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor,nil]]; 

我正在研究一個具有名稱列表的應用程序,其中所有名稱均使用Íslenska(冰島語)語言。 如果在設置中爲應用程序選擇的語言是Íslenska(Icelandic),但上述代碼工作正常,但如果語言不是Íslenska(冰島語),則排序描述符會失敗。「localizedStandardCompare」取決於iOS設備的語言首選項

有沒有什麼辦法可以解決這個依賴性問題?

+0

你是什麼意思的「排序描述符失敗」? –

+0

Toress應該來Tóress前,但是當排序描述符失敗不是這種情況,就說明TóressToress – Vidhan

回答

2

這應該創建一個sortDescriptor,它將使用is_IS語言環境比較字符串。

NSSortDescriptor* sortDescriptior =[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^(NSString* str1, NSString* str2) { 

static NSStringCompareOptions comparisonOptions = 
    NSCaseInsensitiveSearch | NSNumericSearch | 
    NSWidthInsensitiveSearch | NSForcedOrderingSearch; 

    return [str1 compare:str2 options:comparisonOptions range:NSMakeRange(0, str1.length) locale:[NSLocale localeWithLocaleIdentifier:@"is_IS"]]; 
}]; 
+0

之前終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,理由是:「不支持NSSortDescriptor(比較塊不支持)」 – Vidhan

+1

哦,我現在看 - 你試圖使用這種排序描述符與CoreData提取,並且不支持...你可以做的是定期(無需排序)提取,並使用上面的排序描述符排序結果數組。 –