Итак, вот проблема.
у меня есть строка
Белый Клык-0.fb2
Длина метода NSString возвращает 16
После сохранения строки в Core Data (бэкенд — sqlite)
Длина метода NSString возвращает 17, но визуально строка остается прежней
Белый Клык-0.fb2
И, очевидно, метод isEqualToString: вернуть НЕТ
Потратив много времени на эксперименты, я понял, что проблема в этом письме:
й
Удаление этой буквы решит проблему.
Но это продолжает сводить меня с ума, почему происходит что-то подобное?
Вот обходной путь, который работает, но меня не удовлетворяет:
- stringByReplacingPercentEscapesUsingEncoding: - нужно преобразовать строку сразу в и после запроса БД
- транслитерировать всю строку - своего рода хак
И вот обходной путь, который не работает:
- строкаWithUTF8String
- Преобразование экранированных символов UTF8 вернуться к исходной форме
Пожалуйста, помогите мне понять, что происходит со строкой после сохранения в Core Data.
И есть более элегантное решение, которое я сделал?
[yourOriginalString decomposedStringWithCanonicalMapping]
и посмотреть, работает ли это... (я тестировал его, и он возвращает длину 17 при вызове строки в вашем примере) - person Alladinian   schedule 25.02.2013[myString dataUsingEncoding:NSUTF16StringEncoding]
- person Nikolai Ruhe   schedule 25.02.2013