Swift NSUnarchiver错误

时间:2016-07-15 13:46:13

标签: swift nskeyedarchiver

当我尝试取消归档自定义对象时出现以下错误

'无法解码密钥(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
}

1 个答案:

答案 0 :(得分:0)

事实证明这个问题与多个目标有关。似乎当我复制目标时,我用另一个目标交换了原始目标,因此它实际上是一个不能解压缩数据的不同目标。

所以在创建目标时要小心,并确保不要混淆它们!希望这能节省一些人花在我身上的时间!