У меня есть класс под названием Stop
. Этот класс реализует NSCoding
. Я могу сохранить экземпляры Stop
в UserDefaults без проблем. Все идет нормально. Моя проблема заключается в сохранении Array
остановок. Это то, что я пытаюсь:Swift: не удается сохранить массив для UserDefaults
private func save(stopArray array: [Stop],withKey key: String) {
let data = NSKeyedArchiver.archivedData(withRootObject: array)
self.userDefaults.set(data, forKey: key)
self.userDefaults.synchronize()
}
private func loadStopArray(key: String) -> [Stop]? {
guard let data = self.userDefaults.object(forKey: key) as? Data else {
return nil
}
return NSKeyedUnarchiver.unarchiveObject(with: data) as? [Stop]
}
Теперь, каждый раз, когда я называю loadStopArray
я получаю пустой массив. Не нуль, просто пустой массив.
Любые идеи? Благодаря!
Чтобы судить о том, что происходит, я думаю, нам нужно будет увидеть вашу реализацию Stop. – matt
Вы уверены, что используете тот же самый точный ключ при сохранении и извлечении? –
@matt вы были правы, мой конструктор NSCoder возвращал нуль ... Спасибо! – Yotam