В моем приложении у меня есть объект Singleton, который должен сохранять его состояние через запуск приложений. Поэтому мне нужно как-то сэкономить.iOS Autosaved object
Я вижу только два варианта: 1) сохранить его при завершении работы приложения (плюс, возможно, переход на задний план); 2) сохранять его каждый раз, когда какое-либо свойство изменено.
Первый вариант выглядит плохо, потому что приложение может быть убито, например, из-за ошибки, ограничений памяти или отключения питания устройства (разряженная батарея). Поэтому я ожидаю, что состояние не будет сохранено.
Второй вариант требует либо ручных уведомлений о каждом изменении, либо KVO + наблюдение за каждым свойством.
Кажется, что я делаю что-то неправильно здесь. Может быть, вы можете дать мне совет или есть какой-то известный шаблон (я пытался Google, но ничего не нашел).
UPDATE:
Да, есть NSUserDefaults
, но и улучшить его юзабилити (. Л больше, чем просто ключ-значение), я хотел бы написать обертку-Methords, поэтому я закончу с той же проблемой (строки ручного кодирования).
UPDATE2:
CoreData
также плохой выбор для меня: только один объект для хранения + вставив туда также необходимо еще несколько строк кода.
Update3:
Это не вопрос о том, "как сохранить". Речь идет о том, как «автоматически вызывать это сохранение (или с меньшим количеством кодирования)». Поэтому в способе NSUserDefault
нам нужно вручную реализовать каждое свойство в качестве обертки. В NSCoding
- звоните save
или отправьте уведомление (чтобы поймать & сохранить с одного места) от каждого имущества также.
Вы можете использовать [NSUserDefaults] (http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/), он синхронизируется автоматически (или вручную, если вы предпочитают) – Daniel
Вы также можете реализовать протокол NSCoding для сохранения всего класса: см. [этот вопрос] (http://stackoverflow.com/questions/3000220/best-way-to-save-to-nsuserdefaults-for-custom- класс) – Daniel
simpleBob, вопрос не в том, как сохранить, но как сделать эти изменения достаточно частыми (в идеале - автоматическими) для хранения актуального объекта. – kpower