2013-05-14 2 views
1

В приложении iOS мы используем сериализацию сложных объектов через NSKeyedArchiver/NSKeyedUnarchiver для хранения информации и данных.Совместимость NSKeyedArchiver/NSKeyedUnarchiver в разных версиях iOS

Так что приложение будет включать в себя такой упорядоченный объект в приложении пачке, и этот файл будет создан в рамках одной конкретной версии IOS (скажем, IOS 5.0)

Как приложение будет работать на различных версиях IOS (> 5.0) и даже в будущих версиях, мы хотим быть уверенными, что исходный сериализованный объект, включенный в комплект приложений, будет отлично читаться на всех других iOS (6.1, 7.0, ...)

Предполагая, что сложный объект для сериализации состоит из объектов, классы которых включены в SDK всех этих версий iOS (для простоты предположим, что в будущем эти классы не будут считаться в будущем), можно ли быть уверенным, что он всегда будет совместим со всеми iOS?

ответ

2

Как правило, да.

Чтобы быть абсолютно уверенным на 100%, вам нужно будет использовать все пользовательские объекты, а затем у вас есть полный контроль над процессом архивации/разблокировки. Но, пока все классы правильно используют методы кодирования и декодирования ключа-архиватора, тогда все будет совместимо в будущем.

Если Apple по каким-либо причинам решила сломать это, вам лучше всего поймать полученное исключение и сообщить пользователю, что им нужно будет получить обновление до приложения.

Ваш альтернативный подход заключается в том, чтобы сохранить первоначальное развертывание данных в другом формате (например, JSON, возможно сжатом), а затем при запуске приложения, если у вас есть существующая версия, используйте его, если нет, прочитайте в исходных данных развертывания.

+0

Огромное спасибо, я буду следить за вашим предложением об исключении, это безопаснее – Gianluca

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

  • Нет связанных вопросов^_^