我有一个名为Stop
的班级。该类实现NSCoding
。我可以将Stop
的实例保存到UserDefaults,没有任何问题。到现在为止还挺好。我的问题是保存Array
个停靠点。这是我尝试的:
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
时,我都会得到一个空数组。不是,只是一个空数组。
有什么想法吗?谢谢!
答案 0 :(得分:2)
您在加载Object
和Data
时感到困惑。 self.userDefaults.object()
到self.userDefaults.data()
会产生数据。
private func loadStopArray(key: String) -> [Stop]? {
if let data = self.userDefaults.data(forKey: key) {
return NSKeyedUnarchiver.unarchiveObject(with: data) as? [Stop]
} else {
return nil
}
}