gpt4 book ai didi

swift - Cocoa Swift 中的自定义类 Unarchive 为零

转载 作者:行者123 更新时间:2023-11-30 12:42:45 25 4
gpt4 key购买 nike

我正在尝试在 macOS 应用程序中将自定义类保存并检索到 UserDefaults。我的 newData 得到 nil

class countClass: NSObject, NSCoding {
var leftClickCount : Int = 0

init(leftClickCount: Int) {
self.leftClickCount = leftClickCount
super.init()
}

func encode(with coder: NSCoder) {
coder.encode(self.leftClickCount, forKey: "leftClickCount")
}

required convenience init?(coder decoder: NSCoder) {
guard let leftClickCount = decoder.decodeObject(forKey: "leftClickCount") as? Int
else {
return nil
}
self.init(
leftClickCount: leftClickCount
)
}
}

class ViewController: NSViewController {

override func viewDidLoad() {
super.viewDidLoad()

let leftC = countClass(leftClickCount: 25)
let ud = UserDefaults.standard
let archivedData = NSKeyedArchiver.archivedData(withRootObject: leftC)
ud.set(archivedData, forKey: "data")
ud.synchronize()
let tempData = ud.object(forKey: "data") as! Data
let newData = NSKeyedUnarchiver.unarchiveObject(with: tempData) as! countClass // Getting nil here
}
}

最佳答案

我能够通过更改来解决此问题:

decoder.decodeObject(forKey: "leftClickCount") 作为?整数

与:

decoder.decodeInteger(forKey: "leftClickCount")

关于swift - Cocoa Swift 中的自定义类 Unarchive 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com