2010-12-13 57 views
4

我有一個unlocalized的運輸應用程序,它在主項目目錄中有foo.xib。在準備本地化時,我將其移至en.lproj/foo.xib。現在,當我構建我的應用程序並安裝在測試設備上時,它最終會使用舊的foo.nib,它必須從之前出現(安裝過程不得刪除應用程序包中的舊文件)。從測試設備中刪除應用程序並重新安裝可以修復它 - 但我不希望現有客戶必須這樣做。iphone應用程序升級並移動xibs/nibs導致陳舊的資源

其中一些來自調用UIViewController的-initWithNibName:bundle方法(目前我正在向nibBundle傳遞nil)。我可以在這裏創建一個NSBundle實例,指向正確的本地化目錄。其他人在Info.plist中或在界面生成器的「NIB名稱」部分中指定,並且我沒有看到爲這些人指定包的方法。

將所有的xibs重命名爲(例如)en.lproj/newfoo.xib可能會更容易,那麼我認爲它會在運行時找到正確的nib。 (而且我將不得不再次在新版本中使用舊的「foo.xib」名稱)。這裏有更聰明的解決方案嗎? (除了回頭及時從en.lproj目錄開始;-)

謝謝! -Mike

回答

4

回答我自己的問題,以防其他人遇到此問題。看起來,這是Xcode構建發佈週期的工件,當用戶通過App Store升級時,這不是問題。我繼續發佈我的更新,沒有人注意到由過時資源導致的問題。

作爲一種加速開發,看起來Xcode只會複製在構建並安裝到模擬器或測試設備時檢測到的資源。 (爲了防止有500MB資源的遊戲必須在每次構建和測試時被重新複製)。當您(重新)從項目中移動資源時,它不會檢測到該資源並(重新)移動舊的副本。我將向蘋果提交一個關於它的錯誤。

但是,每次升級(複製到用戶的文檔目錄)時,App Store確實會進行全新安裝,因此這不是App Store中的問題。我不確定在將beta測試者發送給.ipa文件時是否存在問題。

+1

我一直在用momd裏面的數據模型來處理這個確切的問題。我可以確認在通過.ipa部署代碼時刪除文件。我創建了一個ad-hoc構建.ipa,將它放到我的iTunes機器上,將我的手機與應用程序商店中的應用程序同步,然後用iTunes安裝ipa文件。它刪除了我不需要的核心數據模型文件,而XCode保留了它們。希望能夠消除你的一些恐懼,謝謝你更新你的問題,因爲我認爲這只是我在應用商店版本中必須處理的一個'功能'。 :( – Diziet 2011-04-13 21:17:51

0

我遇到同樣的問題。問題是手機保留了筆尖的緩存。不知何故,因此需要清除緩存以供您查看新的本地化筆尖。我也不希望我的用戶因爲存儲數據而必須刪除應用程序。

+0

嗨Zambono,只想讓你知道,當我出版了我升級到App Store,用戶可以不注意到陳舊的資源。所以看起來這只是Xcode構建發佈週期的一個問題,而不是通過App Store升級時的問題。 – 2011-03-11 00:33:26

相關問題