2015-11-13 30 views
3

我有一個錯誤,我不明白我更新我的應用程序後。我有一個應用程序已經在應用程序商店。我有一些應用程序特定的數據存檔並存儲在應用程序支持目錄內的文件中。每次應用啓動併發送到後臺時,我都在閱讀和存儲數據。目前爲止一切都很好。現在我發佈了應用程序的更新。更新後,當我啓動應用程序並嘗試解除數據崩潰時,會出現以下異常。- [NSKeyedUnarchiver decodeObjectForKey:]:無法解碼類的對象

-[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.是否有人知道發生了什麼?

+0

感謝您提到重新安裝幫助。對於像我這樣意外更改項目名稱並改回此問題的人,重新安裝就是解決方案。 –

回答

8

我找到了上述的原因。

基本上我將項目目標名稱從版本1更改爲版本2.所以它試圖解碼ProjectName2.ProjectFile而不是ProjectName.ProjectFile

當您啓動第一個版本時,可能的避免方法是@objc(PFUserUtils)。如果您更改像我這樣的目標名稱,請使用NSKeyedUnarchiver.setClass(className forClassName:name)方法將類名稱設置爲舊名稱。

+0

爲什麼你的文件名與「版本號」綁定? – Satyam

+0

謝謝你回答你自己的問題,這只是爲我節省了很多頭痛! –

+0

感謝您的回答,真正挽救我的生命。 –

相關問題