自定义类 Unarchive 在 Cocoa Swift 中为零
Posted
技术标签:
【中文标题】自定义类 Unarchive 在 Cocoa Swift 中为零【英文标题】:Custom Class Unarchive is nil in Cocoa Swift 【发布时间】:2017-02-04 16:13:10 【问题描述】:我正在尝试在我的 macOS 应用程序中将自定义类保存和检索到 UserDefaults。 newData
我得到 nilclass 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
【问题讨论】:
tempData
为零吗?
No tempData 不是 nil
【参考方案1】:
我可以通过更改来解决这个问题:
decoder.decodeObject(forKey: "leftClickCount") as? Int
与:
decoder.decodeInteger(forKey: "leftClickCount")
【讨论】:
以上是关于自定义类 Unarchive 在 Cocoa Swift 中为零的主要内容,如果未能解决你的问题,请参考以下文章