2015-11-19 3 views
0

В моем приложении пользователь может добавить метку и повернуть и переместить позицию метки. и добавить метку программно, щелкнуть мышью по метке метки метки метки, добавить в поле зрения. теперь я хочу реализовать отмену и повторение фетуров. поэтому я храню ярлык в NSArray. Я думаю, что если я храню в метке в массиве, а затем храню массив в NSUserDefaults с ключом, и когда пользователь нажимает на «Отменить», я удаляю все метки из представления и добавляю ярлык из массива, который я храню, но храню в NSMutableArray, но он не хранится в NSUserDefaults.Как хранить NSMutableArray UILabel в NSUserDefaults

NSData *lbldata = [NSKeyedArchiver archivedDataWithRootObject:labels]; 
[[NSUserDefaults standardUserDefaults] setObject:lbldata forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]]; 

я стараюсь СИМПЛА массив как

[[NSUserDefaults standardUserDefaults] setObject:labels forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]]; 

, но это дает мне ошибку.

в вышеуказанных кодовых обозначениях NSMutableArray. Любое предложение приветствуется. спасибо за ваше время. Отличный день.

+2

Dont сохранить метку хранения пользовательской логики представления метки, например, только координаты x/y, возможно, текст и т. д. – luk2302

ответ

3

Ваша цель состоит в том, чтобы разрешить пользователям отменять/повторять ваши действия. Существует целая система для того, что называется NSUndoManager. Вы должны прочитать о документации вместо того, чтобы жюри вышки NSUserDefaults что-то он не был предназначен: https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/UndoManager.html

Далее, NSUserDefaults не является отличным место для хранения типов объектов полного пользовательского интерфейса. Вместо этого, если вы хотите сохранить некоторые критерии об элементе пользовательского интерфейса, чтобы повторно отобразить его таким же образом, как в следующий раз при открытии приложения, вы можете просто сохранить критерии, необходимые для сохранения. Например, возможно, вы храните NSString, связанные с text свойства UILabel и запоминанием CGPoint, связанные с его местоположением и NSNumber, связанные с его углом поворота и т.д.

Но для отмены/повтор, пожалуйста, не используйте NSUserDefaults ,

0

Вы можете получить важные свойства, такие как UILabel NSDictionary

-реперов, строка, цвет и т.д.

, а затем использовать один из следующих вариантов опции для сохранения/удаления/обновления метки:

  1. Используйте sqlite для хранения свойств.
  2. Использовать CoreData для хранения свойств.
  3. Запись свойства в .plist файл
  4. магазин NSDictionary в NSUserDefaults
Смежные вопросы