当我尝试取消归档自定义对象时出现以下错误
'无法解码密钥(root)的类(PhotoList)对象;该类可以在源代码中定义,也可以在未链接的库中定义
我目前在应用程序商店中有一个版本(v1.0,已经通过版本TestFlight(v2.0)发布了更新,这是错误发生的地方。错误不会发生在相同的版本构建中通过Xcode。没有任何改变(我可以看到!)会造成这种情况。
以下是我存档对象的代码
let data = NSKeyedArchiver.archivedDataWithRootObject(VehicleList.instance)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "archiveName")
这是我取消归档对象的代码
if let data = NSUserDefaults.standardUserDefaults().objectForKey("archiveName") as? NSData {
let photoList : PhotoList = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! PhotoList
}
答案 0 :(得分:0)
事实证明这个问题与多个目标有关。似乎当我复制目标时,我用另一个目标交换了原始目标,因此它实际上是一个不能解压缩数据的不同目标。
所以在创建目标时要小心,并确保不要混淆它们!希望这能节省一些人花在我身上的时间!