【问题标题】:Swift NSUnarchiver ErrorSwift NSUNarchiver 错误
【发布时间】:2016-07-15 13:46:12
【问题描述】:

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

'无法为键(根)解码类(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
}

【问题讨论】:

  • 在哪一行崩溃?此外,您正在转换为错误的类型。你应该用VehicleList替换PhotoList
  • VehicleList/PhotoList 是源代码中的一个类型——我的错!它在下面一行崩溃:让 photoList : PhotoList = NSKeyedUnarchiver.unarchiveObjectWithData(data) as!照片列表

标签: swift nskeyedarchiver


【解决方案1】:

事实证明,这个问题与多个目标有关。似乎当我复制目标时,我用另一个目标交换了原始目标,所以它实际上是一个不同的目标,无法取消归档数据。

所以在创建目标时要小心,并确保不要混淆它们!希望这可以节省我解决这个问题的时间!

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 2017-03-20
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多