更新我的应用程序后,我遇到了一个我不明白的错误。我有一个应用程序已经在应用程序商店中。我有一些特定于应用程序的数据存档并存储在应用程序支持目录内的文件中。每次启动应用程序并发送到后台时,我都在读取和存储数据。到目前为止一切都很好。现在我发布了应用程序的更新。更新后,当我启动应用程序并尝试取消归档数据时,它会因以下异常而崩溃。

-[NSKeyedUnarchiver decodeObjectForKey:]:
cannot decode object of class (ProjectName.ProjectFile) for key (root);
the class may be defined in source code or a library that is not linked.

如果我删除该应用程序并再次安装该应用程序,一切正常。

我的原始应用程序和更新都是用 Swift 编写的。我也没有将文件名从版本 1 更改为 2。有人知道发生了什么吗?

最佳答案

我找到了上述原因。

基本上我将项目目标名称从版本 1 更改为版本 2。所以它试图解码 ProjectName2.ProjectFile 而不是 ProjectName.ProjectFile

避免的可能方法是在您启动第一个版本时为该类添加 @objc(PFUserUtils)。如果像我一样更改目标名称,请使用 NSKeyedUnarchiver.setClass(className forClassName:name) 方法将类名称设置为旧的。

关于ios - -[NSKeyedUnarchiver decodeObjectForKey :]: cannot decode object of class,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33702782/

10-11 14:42