2011-10-21 90 views
3

我正在嘗試爲我的應用程序寫入重要升級。升級非常重要,我實際上已經從頭開始編寫代碼,新版本中沒有包含任何原始代碼庫。我只是複製舊版本的* -Info.plist,並更新了Bundle Version標識符。應用程序升級問題

我在嘗試從較舊版本(當前App Store)版本升級時遇到問題。當我通過XCode中的設備上啓動應用程序,我給出的消息:

錯誤啓動可執行文件「應用程序名」 錯誤啓動遠程程序:無法獲得處理任務699

如果我試圖終止之後再次運行應用程序,我顯示在輸出窗口如下:

2011-10-21 15:40:27.996 Application Name[713:707] Unknown class Application_Name_NewAppDelegate in Interface Builder file. 
2011-10-21 15:40:28.013 Application Name[713:707] Unknown class myTabBarController in Interface Builder file. 
2011-10-21 15:40:28.019 Application Name[713:707] Unknown class SelectViewController in Interface Builder file. 
2011-10-21 15:40:28.037 Application Name[713:707] Unknown class AddDateViewController in Interface Builder file. 
2011-10-21 15:40:28.047 Application Name[713:707] Unknown class DisplayViewController in Interface Builder file. 
2011-10-21 15:40:28.063 Application Name[713:707] Unknown class AboutViewController in Interface Builder file. 
2011-10-21 15:40:28.125 Application Name[713:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UICustomObject 0x16cae0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key window.' 
*** First throw call stack: 
(0x3200c8bf 0x31d7c1e5 0x3200c5f5 0x35ba1333 0x35ba0e33 0x35b7af19 0x31f6b803 0x31f6c491 0x32d384bf 0x32d39bb9 0x32c72a45 0x32afc227 0x32af6313 0x32ac4921 0x32ac43bf 0x32ac3d2d 0x3206fe13 0x31fe0553 0x31fe04f5 0x31fdf343 0x31f624dd 0x31f623a5 0x32af5457 0x32af2743 0x21b9 0x2178) 

這些類實際上是當前版本的一部分,在新版本中不包含在所有我正試圖升級到。所以在我看來,升級失敗的原因不明。

有沒有人有任何亮光流露在此?

+0

任何人有任何想法? –

+0

這是否會發生每次或只有一次?我也在運行一個新版本時遇到了一些問題,但是它非常罕見,並且第二次啓動它運行良好 – 2011-10-27 19:46:00

回答

6

這聽起來像是一個NIB緩存問題(錯誤結束「...在Interface Builder文件中」)。當我重命名NIB時,我曾經看到過類似的問題,但沒有在代碼的某個地方糾正它,但卻驚訝地發現由於NIB緩存的存在,不正確的名稱仍然有效。不是直接的並行,但它說明了應用程序數據被緩存到當前的代碼構建之外,並且在錯誤的情況下,它指的是接口構建器,因此可能是有趣的NIB緩存。

通常情況下,做一個「乾淨的構建」將解決這個問題,但如果你已經完全從頭開始,你沒有任何遺留構建文件夾的內容,所以這似乎不會成爲問題。因此可能的一種可能是嘗試手動清除NSCachesDirectory並查看是否可以解決問題。 (任何人都可以確認NIB Cache是​​否存儲在NSCachesDirectory中?)

其次,從Xcode構建過程似乎不會直接反映真正的AppStore升級,就像在實際的AppStore升級中整個應用程序被刪除一樣除了用戶數據目錄之外,所以應該刪除任何緩存的數據。 One answer on this question建議有趣的想法,建立你的應用程序,然後通過iTunes安裝可能會更密切地反映真正的升級過程,從而告訴你問題是否會存在於一個真正的升級,而不是從Xcode的建設。值得關注的是,因爲所有報告都表明NIB緩存在更新時被清除。

+0

感謝您的幫助鄧肯,我會在今晚看看您的建議 –

0

假設你正在使用的XCode 4,在Project Navigator中,選擇你的項目,那麼你的目標。選擇構建階段,並驗證:

你所有的碎粒列在「複製包資源」。

所有'.m'文件都列在'編譯源'下。

(如果您使用的Xcode 3,你可以找到這些在Project Navigator本身在「目標」)

有時筆尖文件沒有放置在構建階段一些奇怪的原因。

如果這樣不能解決問題,請在Interface Builder中爲每個具有問題的筆尖單擊文件所有者,選擇身份檢查器並檢查該類是否設置爲適當的筆尖。

+0

項目中不存在nib文件,這就是爲什麼我覺得很奇怪,我得到的引用 –

+0

你完全刪除了以前的項目嗎?確保它也從User/Library/Developer/Xcode/DerivedData&Snapshots中移除。還要確保它實際上是在一個新的項目文件夾中創建的,因爲它可能有舊文件,例如本地git存儲庫等。 – 2011-11-01 12:44:34

+0

它是一個全新的項目,只是使用與以前版本相同的捆綁ID。 –