Simperium - Diff ошибки, UniCharMax
Я сериализую массив словарей в строку, и кажется, что это вызывает проблемы при генерации diff... или что-то... Я видел много таких:
AssertMacros: hash <= (~(UniChar)0x00), Hash value has exceeded UniCharMax! file: /Users/…/Pods/Google-Diff-Match-Patch/DiffMatchPatchCFUtilities.c, line: 391
Я не смотрел очень глубоко, но я не понимал, что я делаю неправильно...
Кроме того, у меня много 440 ошибок, которые иногда появляются с ошибкой выше. Как я могу справиться с этими ошибками? Разве фреймворк не должен отправлять полный объект, когда появляется 440?
Спасибо!
1 ответ
Ошибка 440 означает "Недопустимый дифференциал". После проверки DiffMatchPatch кажется, что ошибка, которую вы видите, вызвана чрезмерно большим массивом различий (что, в данном случае, похоже, является внутренней проблемой Diff Match Patch).
Пожалуйста, взгляните на этот запрос, который уже реализует механизм, над которым вы сейчас работаете: https://github.com/Simperium/simperium-ios/pull/121
В частности, NSArray+Simperium, SPMemberJsonList и SPJsonDiff содержат логику для обработки DiffMatchPatch.