Соответствие протоколу NSCoding


Соответствие протоколу NSCoding

Протокол NSCoding объявляет два метода, и оба они обязательны. Один зашифровывает ваш объект в форму архива, а другой создает новый объект путем дешифрирования архива. Обоим методам передается экземпляр типа NSCoder, который требует практически такой же обработки, как и экземпляр класса NSUserDefaults, описанный в предыдущей главе. Вы можете шифровать и расшифровывать как объекты, так и скаляры (переменные типа int и float), используя кодирование "ключ-значение".

Для поддержки архивирования в вашем объекте необходимо зашифровывать каждую переменную экземпляра в методе encoder с использованием соответствующего метода шифрования. Нам нужно реализовать метод, который инициализирует объект из экземпляра типа NSCoder, позволяя восстанавливать объект, который был ранее заархивирован.

Вот в целом и все. Если вы реализуете эти два метода для шифрования и дешифрирования всех свойств своего объекта, ваш объект будет поддерживать архивирование и его можно будет записывать в архивы и считывать оттуда.

Сохраните изменения и запустите эту версию приложения Persistence. Как видите, картина практически не изменилась. Интерфейс идентичен предыдущей версии.

Для этой новой версии потребовалось больше строк кода, чем для предыдущей (со списками свойств), поэтому у вас может возникнуть сомнение: а есть ли какое-то преимущество в использовании архивирования перед списками свойств? Что касается этого приложения, то ответ простой: нет, в данном случае, действительно, нет никакого преимущества. Однако вернитесь мысленно к последнему примеру, где пользователь мог редактировать список президентов и для каждого президента было предусмотрено по четыре различных поля, которые также можно было редактировать. Для того чтобы обеспечить персистентность данных с использованием списка свойств, это приложение должно включать итерирование списка президентов, создание экземпляра типа NSDictionary для каждого президента, копирование значения каждого из их полей в экземпляр типа NSDictionary и добавление этого экземпляра в другой массив, который уже можно было бы записать в файл списка свойств. И причем это работало бы при ограничении, состоящем в использовании только сериализуемых свойств. В противном случае не было бы и речи о списках свойств как о варианте сохранения данных без выполнения огромного объема преобразований.
  • Дата: 29-12-2014, 20:28

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Соответствие протоколу NSCoding

Технологии, секреты и фишки Apple: Iphone, iPad, iPod