2012-06-16 31 views
1

python腳本生成一個Objective-c程序讀取的已排序的utf 8字符串列表。 唯一的問題,似乎這些語言的排序有所不同?
python/objective-c utf8比較不同

在Python, 'i' 的< 'é'`

但在目標c [@"i" compare:@"é"]返回1(NSDescendingAscending)(這意味着 'I'>' é'`)

任何想法如何得到這個權利?我不介意改變我的任何Python代碼或我的Objective-C代碼
感謝

+0

它可能與某個案例使用複合字符(如'+ e =é和許多中文符號)有關,而另一個則不是。如果是這樣,他們實際上是不同的情況下,兩個比較是正確的。 –

回答

2
在Objective-C

[@"記者" compare:@"記譜"]返回-1(NSAscending)(這意味着'記者' > '記譜'

不,這不是什麼意思。上升意味着,當按從左到右的順序讀取(接收者到參數)時,您會在排序中上升/下降。所以,這意味着接收者不如參數。

the docs for NSOrderedAscending

NSOrderedAscending
左操作數大於右操作數較小。

+0

肯,我認爲你在這裏是錯的 – Thomas

+0

那麼,你編輯你的問題,因爲我回復,所以它是不同的。你的問題現在無意義了,因爲沒有'NSDescendingAscending'這樣的東西。儘管如此,我不確定我如何引用和鏈接到文檔是錯誤的。 「NSOrderedAscending」確實意味着接收者比參數少。你可以使用'NSNumber'來驗證它:'[[NSNumber numberWithInt:1] compare:[NSNumber numberWithInt:2]]' - >'NSOrderedAscending' –

+0

好的我沒有注意到我的問題中的錯誤,對不起! :)是的,你是正確的上升和下降的手段,但假設我是正確的,我的問題基本上是「爲什麼python的比較不同於比較在objective-c」 出於某種原因,當我按Enter鍵添加它發送信息的一條線和上次沒有保留我的完整答案。我補充說,正確的答案是「使用比較:選項:NSLiteralSearch」 – Thomas