stackoverflow.com/questions/46398956/...

ользую Xcode 8 и Swift 2.3

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

ViewCotroller будет иметь три кнопки

Добавить текст
Добавить изображение: пользователь может добавить любое количество textViews и изображений. Поэтому мне нужно сохранить всю эту информацию тоже.
Добавить ViewController: пользователь может иметь массив этого viewController и должен сохранить все.

Вопрос 1)

Можно просто сохранить self.view и автоматически ли сохранить все подпредставления?

Вопрос 2)

Мне нужно инициализировать без кодера при запуске, просто используя

let nameVccVar = nameVcc()

а также

let nameVccVar = nameVcc(coder: CodeVar)

Вопрос 3)

Как сохранить все эти закодированные данные в файл с помощью NSKeyedUnarchiver и получить обратно?

Пожалуйста, помогите мне или дайте мне советы, чтобы сделать всю эту работу

class nameVcc: UIViewController
{
    var nameIntVar = 0
    var nameStringVar = "Save this"
    var nameImageVar = UIImage()

    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    required init?(coder NkdPsgVar: NSCoder)
    {
        super.init(coder: NkdPsgVar)
    }

    override func encodeWithCoder(DkdPsgVar: NSCoder)
    {

    }

    func addTextViewBtnClick()
    {
        let viewVar = UIView()

        // Set many values for view 

        self.view.addSubview(viewVar)
    }

    func addImageViewBtnClick()
    {
        let imgViewVar = UIImageView()

        // Set many values for ImageView

        self.view.addSubview(imgViewVar)
    }
}

Я тоже устал

convenience init()
{
    self.init()
}

а также

convenience init()
{
    self.init(coder: NSCoder())
}

Ответы на вопрос(1)

Решение Вопроса

TL; DR:
Существуют ключевые шаги и методы, необходимые для реализации восстановления состояния в вашем приложении.

Включение восстановления состояния приложения в делегате приложения путем возвратаtrue для этих методовshouldSaveApplicationState а такжеshouldRestoreApplicationState.настройкаИдентификатор восстановления для контроллеров представления, в которых вы хотите, чтобы восстановление состояния осуществлялось в.ВнедрениеencodeRestorableStateWithCoder а такжеdecodeRestorableStateWithCoder методы в вашем контроллере представления. Первый используется для сохранения любой информации о состоянии вашего контроллера представления на диск, используяencodeObjectForKey Последний должен использоваться для восстановления состояния из сохраненного содержимого на диск с помощьюdecodeObjectForKey

Посмотрите это удивительное сообщение в блоге оГосударственная реставрация для облегчения понимания. Если у вас есть время, также потратить на просмотрГосударственная реставрационная сессия WWDC.

Естьнет нужды чтобы сохранить всеViewController себя.UIKit делает это для вас, когда вы устанавливаете свой идентификатор восстановления (В Интерфейсном Разработчике). Единственное, что нам нужно сосредоточить на восстановлении состояния, это сохранить ваши основныесвойства необходимо заново создать приложение"Государственный", например,Bool свойство, которое определяет, хотите ли вы отображать определенную кнопку или нет.

Теперь перейдем к вашей серии вопросов ....

Могу ли я просто сохранить self.view и он может автоматически сохранить все подпредставления?

Вам не нужно сохранять какие-либо ваши взгляды. Все подпредставления будут обработаныUIKit, Кодировать ваши необходимые свойства (такие какBool флаги,подсчитывать переменные,ключевые свойства которые могут быть использованы для извлечения данных из вызова API для вашего источника данных и т. д.) внутриencodeRestorableStateWithCoder Не забудьте перенастроить состояние контроллера вида изdecodeRestorableStateWithCoder, Оба эти метода относятся кUIStateRestoring протокол.

Мне нужно инициализировать без кодера при запуске, просто используя

Не нужно делать какие-либо модные вещи.

Как сохранить все эти закодированные данные в файл с помощью NSKeyedUnarchiver и получить обратно?

Как я уже говорил ранее, реализовать необходимоUIStateRestoring Методы протокола для сохранения и восстановления состояния вашего приложения.

 Badhan Ganesh25 сент. 2017 г., 19:29
Вам не нужно это называть. Будет автоматически вызываться (encodeRestorableStateWithCoder), когда приложение переходит в фоновое состояние. Когда вы открываете свое приложение обратно,decodeRestorableStateWithCoder будет называться.
 Badhan Ganesh25 сент. 2017 г., 06:09
 Sujay U N25 сент. 2017 г., 19:34
Нет, это не мое дело. Я объяснил как еще один вопрос. Ты можешь помочь мне с этимstackoverflow.com/questions/46398956/...
 Sujay U N25 сент. 2017 г., 05:49
Все ссылки, которые вы упомянули, показывают кодирование ... Есть ли быстрая версия того же самого?
 Sujay U N25 сент. 2017 г., 19:22
Как я вызываю encodeRestorableStateWithCoder и decodeRestorableStateWithCoder при нажатии кнопки.

Ваш ответ на вопрос