swift3 – Swift 3 Xcode 8 – SwiftValue encodeWithCoder –
发布时间:2020-12-14 04:41:40 所属栏目:百科 来源:网络整理
导读:我的自定义对象符合NSCoding协议,具有以下方法 required init(coder decoder: NSCoder) { super.init() createdDate = decoder.decodeObject(forKey: "created_date") as? Date userId = decoder.decodeInteger(forKey: "user_id")}func encode(with aCoder:
我的自定义对象符合NSCoding协议,具有以下方法
required init(coder decoder: NSCoder) { super.init() createdDate = decoder.decodeObject(forKey: "created_date") as? Date userId = decoder.decodeInteger(forKey: "user_id") } func encode(with aCoder: NSCoder) { aCoder.encode(createdDate,forKey: "created_date") aCoder.encode(userId,forKey: "user_id") } 这是Swift 3中nscoding协议的正确方法名称,但应用程序崩溃时出现错误SwiftValue encodeWithCoder – 无法识别的选择器发送到实例 显然这种方法不可用,为什么不被认可? 参考文献https://developer.apple.com/reference/foundation/nscoding 这是我制作的归档方法 func encodeObject(_ defaults:UserDefaults,object:NSCoding?,key:String) { if (object != nil) { let encodedObject = NSKeyedArchiver.archivedData(withRootObject: object) defaults.set(encodedObject,forKey: key) } else { defaults.removeObject(forKey: key) } } 解决方法
问题是您正在尝试存档可选项.替换此行:
if (object != nil) { 有: if let object = object { (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |