나는이 간단한 클래스NSCoder 충돌 (엑스 코드 (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가 작업을 수행 할 때 발생합니다. 문제가 어디서 왔는지 이해할 수 없습니다.
감사합니다.
내가 위에서 이해할 수 없었다, I 이 대답에서 해결책을 얻었습니다 : https://stackoverflow.com/a/39656687/1298362 – g212gs
감사합니다. 통찰력있는 대답을 주셔서 감사합니다. 단지 "여기가이 작업을함으로써 ...." – TheFuquan