iOS - сохранение свойств просмотра - PullRequest
2 голосов
/ 30 ноября 2011

Это может показаться странным вопросом, но я подумал, что задам его здесь, прежде чем потратить пару часов на его реализацию. В моем приложении я сохраняю свойства представления (количество вложенных просмотров и т. Д.) В базе данных sqlite3. Читая данные обратно, я подумал: «Не будет ли намного проще просто сохранить представление в базе данных?»

Итак, используя что-то типа блоба, как вы думаете, это было бы возможно?

Что-то вроде:

  1. Привязать каплю для вставки
  2. view = sqlite3_column_blob(statement, 0); для извлечения

Похоже, это может работать? Мое самое большое беспокойство - знание размера представления на вставке и выборе. Возможно ли что-то подобное или не задокументировано, потому что это слишком смешно?

Спасибо!

и затем вытащить его

1 Ответ

2 голосов
/ 30 ноября 2011

UIView соответствует NSCoding, что означает, что вы можете сериализовать и десериализовать его.Именно так работают файлы nib.Во-первых, см. Руководство по программированию архивов и сериализаций .

Один простой способ сериализации UIView выглядит следующим образом:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:view]

Затем можно написать1011 * любым удобным способом.

Чтобы десериализовать представление, используйте это:

UIView *view = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Это создаст новую копию всей иерархии представления.

Обратите внимание, что UIView только сериализует свои собственные свойства.Если вы подкласс UIView и хотите сериализовать дополнительные свойства, вам нужно переопределить encodeWithCoder: и initWithCoder:, чтобы добавить свои свойства.Это подробно описано в Объекты кодирования и декодирования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...