我想从来自 NSKeyedUnarchiver 的字典中获取数据。有什么解决办法吗? 我的代码已被遵循。
class Test: NSObject {
var intData: Int
var stringData: String
.
.
.
func updateData() {
NSKeyedArchiver.archiveRootObject([
"intData": self.intData,
"stringData": self.stringData,
], toFile: _path())
}
func loadData() {
let data = NSKeyedUnarchiver.unarchiveObjectWithFile(_path)
// --> error: I can't get data["intData"] :(
self.intData = data["intData"].hasValue ? data["intData"] : 0
self.stringData = data["stringData"].hasValue ? data["stringData"] : ""
}
}
如果您有任何好主意,我会很高兴。
最佳答案
unarchiveObjectWithFile
返回 AnyObject?
因此您需要解开它
将您的代码更改为
let data: AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithFile(_path)
if let unwrapData: AnyObject = data {
self.intData = unwrapData["intData"] as Int
self.stringData = unwrapData["stringData"] as String
}
注意:将下标返回的数据转换为Int或String
<小时/>上面的代码应该可以工作,因为 intData
和 stringData
不是可选的
如果它们是可选的,那么您需要检查它们
self.intData = (unwrapData["intData"] as? Int) != nil ? unwrapData["intData"] as? Int : 0
self.stringData = (unwrapData["stringData"] as? String) != nil ? unwrapData["stringData"] as? String : ""
如果没有找到,将输入 0 或“”
或
self.intData = unwrapData["intData"] as? Int
self.stringData = unwrapData["stringData"] as? String
如果没有找到则为零
关于swift - 如何从来自 NSKeyedUnarchiver 的 Dictionary 获取多种类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200347/