2013-08-10 2 views
1

Я хотел бы задать некоторое предложение о том, как восстановить состояние viewControllers. Как в приложении под названием «Pic Collage», когда вы создаете карту и сохраняете ее, а затем ее восстанавливаете.Каков наилучший способ восстановить состояние ViewController

+0

Вы имеете в виду сериализацию? Вероятно, вы получите более подробный ответ, но здесь несколько ссылок: [Правильный способ сохранения/сериализации пользовательских объектов в iOS] (http://stackoverflow.com/questions/5413851/correct-way-to-save- serialize-custom-objects-in-ios), [Как сериализовать класс в IOS sdk (Objective-c)?] (http://stackoverflow.com/questions/8921698/how-to-serialize-a-class- in-ios-sdk-objective-c) ... – UIlrvnd

+0

ok. Я пытаюсь создать карту, в которой пользователь может вставлять изображения в viewController, поворачивать их, изменять их размер и т. Д., И пользователь может вставить столько, сколько захочет изображения. Каждое изображение похоже на слой. И позже пользователь должен иметь возможность восстановить (включая правильное вращение, изменение размера). – Anand

ответ

4

Если вы действительно хотите узнать о сохранении состояния, см. Видео WWDC 2012, Saving and Restoring Application State on iOS.

Но это также так же вероятно, что рассматриваемое приложение просто сохраняет данные модели (объектную модель, которая представляет эту карту) в постоянном хранилище, и когда приложение перезапускается, оно просто загружает данные модели снова , Существует целая куча возможных технологий для постоянного хранения от Core Data (прочная, но немного сложная) до plists (простая, но менее сложная). Есть тонны других опций (archives and serialization, SQLite, JSON и т. Д.), Но я бы предпочел не упустить проблему дальше.

Я предлагаю вам ознакомиться с некоторыми из этих технологий, проделать несколько демонстраций и вернуться, если у вас появятся дополнительные вопросы. Но этот вопрос слишком широк, чтобы получить конкретные ответы на данный момент.

+0

У меня было 2 вещи в моем сознании, либо Core Data, либо может быть простой способ сохранить весь ViewController и восстановить его позже. Я даже пытался архивировать вид из ViewController, но восстановление, похоже, не восстанавливает. SO Core Data, казалось, был правильным выбором. – Anand

+0

@Joy Лично я предлагаю вам меньше беспокоиться о сохранении состояния контроллера представления (который предназначен для решения немного другой проблемы) и вместо этого сосредоточиться на сохранении данных модели в постоянном хранилище. На данный момент я предлагаю вам отказаться от понятия «сохранить контроллер представления». Сосредоточьтесь на основных принципах MVC, сохраняя данные модели в постоянном хранилище и т. Д. Если вы освоили Core Data, во-первых, вы были бы в отличной форме. – Rob

+1

Спасибо за предложения. @Rob Я работал с Core Data в некоторых проектах (хотя не могу сказать, что я эксперт, но не новичок). И я думаю, что в последнем случае я пойду с выбором Core Data. – Anand

0

Если вы поддерживаете iOS 6 и выше, взгляните на State Preservation and Restoration. Даже если вам нужно поддерживать более старые версии iOS, документация поможет вам узнать, когда и как можно добиться восстановления, и что вам нужно учитывать.

+0

Я видел этот документ, а также видео с WWDC, но я не был уверен, что это правильный путь. Потому что документ сохранения и восстановления состояния, по-видимому, подходит, когда вы закрываете приложение из фона. – Anand

+0

Это действительно зависит от того, сколько у вас состояния, которое вам нужно восстановить ... – Wain