2012-06-16 1 views
1

Сценарий python генерирует список отсортированных utf 8 строк, которые программа Objective-c читает. Только проблема, похоже, что порядок отличается на этих языках?
python/object-c utf8 сравнить отличаются

В Python 'я' < 'é'`

, но в Objective-C [@"i" compare:@"é"] возврата 1 (NSDescendingAscending) (что означает 'я'>' é'`)

Любая идея как это сделать правильно? Я не против изменения либо мой питон код или мой 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 отличается от сравнения в объективе-c» по какой-то причине, когда я нажимаю Enter, чтобы добавить строка отправляет сообщение, и SO не сохранял мой полный ответ в прошлый раз. Я добавил, что правильный ответ на этот вопрос: «use compare: options: NSLiteralSearch» – Thomas

Смежные вопросы