Как сериализовать UIView?

Можно ли сериализовать UIView объект? Если да, как я могу это сделать?

1 ответ

UIView реализует NSCoding протокол, так что вы можете использовать encodeWithCoder: чтобы получить сериализованное представление, и initWithCoder: восстановить UIView из такого представления. Вы можете найти много деталей в Руководстве по программированию Сериализации для Какао.

Вот быстрый пример того, как это сделать:

- (NSData *)dataForView:(UIView *)view {
  NSMutableData *data = [NSMutableData data];
  NSKeyedArchiver  *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
  [archiver encodeObject:view forKey:@"view"];
  [archiver finishEncoding];
  [archiver release];

  return (id)data;
}

- (UIView *)viewForData:(NSData *)data {
  NSKeyedUnarchiver  *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

  UIView *view = [unarchiver decodeObjectForKey:@"view"];
  [unarchiver finishDecoding];
  [unarchiver release];

  return view;
}
Другие вопросы по тегам