我使用排序描述符對提取請求的結果進行排序。如何使用nspredicate對非英文字符串進行排序?
NSFetchRequest* req = [[NSFetchRequest alloc] initWithEntityName:[MyEntity entityName]];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"property"
ascending:YES
selector:@selector(localizedCompare:)];
req.sortDescriptors = [NSArray arrayWithObject:descriptor];
return [self.managedObjectContext executeFetchRequest:req error:nil];
問題是單詞以非英語字符開頭,如'İ'列在列表末尾。這是一個土耳其字母,字母看起來像這樣:
A,B,C,Ç,D,E,F,G,H,H,I,J,K,L,M, N,O,Ö,P,R,S,Ş,T,U,Ü,V,Y,Z.
所以這封信是在第12位。
我不知道爲什麼,但在獲取對象後使用比較器工作。所以它適用於任何數組,但不適用於獲取請求的排序描述符。
它,它是基於用戶的語言
嘗試在
NSString
創建一個類別,內容如下創造一個乾淨NSLocale
爲此需要沒有工作。我也嘗試改變模擬器的語言。 – Mert 2012-08-05 07:28:34這很奇怪。如果我用'[myArray sortedArrayUsingSelector:@selector(localizedCompare :)]對數組排序',那麼我會得到正確的結果。你能告訴代碼你如何設置獲取請求嗎? – 2012-08-05 08:19:01
我編輯了我的問題並添加了代碼 – Mert 2012-08-05 09:19:52