我有這個簡單的類NSCoder碰撞(Xcode中8,夫特3)
import UIKit
class SimpleModel: NSObject, NSCoding {
var name : String!
var done : Bool!
init(name:String) {
self.name = name
self.done = false
}
internal required init?(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObject(forKey: "name") as! String
self.done = aDecoder.decodeBool(forKey: "done") // BUG HERE
}
func encode(with encoder: NSCoder) {
encoder.encode(self.name, forKey: "name")
encoder.encode(self.done, forKey: "done")
}
}
保存代碼:
let data = NSKeyedArchiver.archivedData(withRootObject: storageArray)
UserDefaults.standard.set(data, forKey: "storage")
UserDefaults.standard.synchronize()
讀取的代碼:
if let data = UserDefaults.standard.data(forKey: "storage") {
storageArray = NSKeyedUnarchiver.unarchiveObject(with: data) as! [SimpleModel]
}
的當NSKeyedUnarchiver執行它的工作時會出現問題。我無法理解問題來自哪裏。
謝謝!
我無法上面明白,我從這個答案得到了解決方案: https://stackoverflow.com/a/39656687/1298362 – g212gs
謝謝你一個有見地的答案,而不僅僅是「這裏通過這樣做工作......」 – TheFuquan