【问题标题】:NSKeyedUnarchiver error after renaming Xcode project重命名 Xcode 项目后出现 NSKeyedUnarchiver 错误
【发布时间】:2016-02-15 14:14:24
【问题描述】:

我刚刚重命名了我的 Xcode 项目,当我运行它时,我收到了这个错误:

2015-11-14 05:32:42.337 Buck Tracker[3537:1456100] * 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“* -[NSKeyedUnarchiver decodeObjectForKey:]: 不能为键(NS.objects)解码类(iBudgeter.Record)的对象;该类可以在源代码或未链接的库中定义'

Buck Tracker 是新名称,iBudgeter 是原始名称。 Record 是我为存储一些数据而创建的自定义NSObject

我尝试将项目重命名为iBudgeter,但没有成功。在 git 中恢复到以前的版本确实有帮助,但是当我再次重命名它时遇到了同样的错误。

有什么建议吗?

【问题讨论】:

  • Buck Tracker 是否符合NSCoding 协议?
  • 您是否尝试过“干净”?
  • @hal9000 我做了,但没用
  • @JAL 我应该怎么做才能使其符合NSCoding
  • 您是否拥有想要保留访问权限的已存储数据的现有用户?

标签: ios xcode swift nsdata nskeyedunarchiver


【解决方案1】:

另一种方法是固定用于 NSCoding 的类的名称。您只需使用:

  • NSKeyedArchiver.setClassName("Record", forClass: Record.self序列化前
  • NSKeyedUnarchiver.setClass(Record.self, forClassName: "Record") 反序列化之前

任何需要的地方。

看起来 iOS 扩展在类名前加上扩展名。

【讨论】:

    【解决方案2】:

    如果您将文件移动到另一个模块,则需要添加其他信息

    NSKeyedArchiver.setClassName("OldModule.ClassName", for: ClassName.self)
    NSKeyedUnarchiver.setClass(ClassName.self, forClassName: "OldModule.ClassName")
    

    【讨论】:

    • 这是模块更改或目标被复制等时的正确答案。谢谢。
    【解决方案3】:

    不要更改您的项目名称。只需更改显示名称即可。它是 Info.plist 中的“捆绑显示名称”条目。您可能需要添加条目。

    如果您想更改 OS X 应用的显示名称,请参阅 this answer

    【讨论】:

    • 哇,你是救生员!不知道我能做到这一点:D
    • 如果您想更改名称而不仅仅是显示名称,该怎么做?
    【解决方案4】:

    仅将使用 NSCoding 协议的 ClassA 重命名为 ClassB 后,我遇到了同样的错误。

    对我来说,问题是我在 UserDefaults 中使用了 ClassA。 所以有旧名称 ClassA 存储在 UserDefaults .plist 中。

    当应用程序启动时,它尝试读取 .plist,并且由于名称不匹配,应用程序崩溃。

    对我来说,解决方案只是删除用户默认设置并再次运行应用程序,它就成功了。

    要删除我在终端中使用此命令的默认值:

    defaults delete buldle-identifier

    【讨论】:

      【解决方案5】:

      我昨晚遇到了这个问题。只需将“产品名称”(在构建设置下)更改回原始值,经过 3 小时的调查后对其进行排序。

      【讨论】:

        【解决方案6】:

        只需删除旧应用程序并再次运行它对我有用

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-14
          • 1970-01-01
          • 2015-02-28
          • 2016-06-09
          • 1970-01-01
          • 2014-12-17
          相关资源
          最近更新 更多