3

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

-[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。有人知道发生了什么吗?

4

1 回答 1

12

我找到了上面的原因。

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

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

于 2015-11-14T07:52:48.070 回答