2013-09-29 142 views
1

我已經在App Store上有我的應用程序,我想發佈一個新的國際化版本。所以,我爲英文版本創建了xib,爲法文創建了xib(在良好的en.lproj和fr.lproj文件夾中進行了本地化)。當我在我的iPhone上設置了已經有第一個非國際化版本的應用程序時,我遇到了一些與界面有關的問題:應用程序不會更新用戶界面上的所有更改,即使設置了該標籤,我仍然擁有法語標籤iPhone語言爲英語(該應用程序不會自動選擇好的xib)。更新應用程序後加載錯誤的xib

如果我只清理項目並重新構建,它仍然不起作用,但是當我清理我的項目時,刪除了手機的應用程序並重新構建,一切都像魅力一樣。我不希望那些已經擁有該應用並通過App Store進行更新的用戶遇到問題:/有沒有辦法瞭解會發生什麼?

回答

2

這是發生了什麼:在舊版本中,你必須在應用程序包一個的.xib文件,和包看起來像這樣:

<bundle-path>/interface.xib 

在新版本中,你有兩個本地化版本這個文件和你的包看起來像這樣:

<bundle-path>/fr.lproj/interface.xib 
<bundle-path>/en.lproj/interface.xib 

當應用程序試圖加載廈門國際銀行文件,直接看在bundle目錄第一,如果它沒有找到該文件,會在文件具有本地化文件的子目錄。

如果您有設備上的舊版本,然後建立並運行Xcode的新版本,傳統的文件刪除,所以你最終這種捆綁

<bundle-path>/interface.xib 
<bundle-path>/fr.lproj/interface.xib 
<bundle-path>/en.lproj/interface.xib 

和應用程序加載因爲它從不需要查看本地化子目錄。

我假設從Xcode部署到開發設備時,出於性能原因,遺留文件不會被刪除。

但是,您的用戶不會遇到此問題。當用戶安裝應用程序更新時,應用程序包將完全被您的新包所取代。因此,如果您上傳沒有舊版文件的「乾淨」套件,並且此版本可在您的設備上進行全新安裝時起作用,那麼它也可以在用戶設備上運行。

+0

非常感謝您的回答。但是我怎樣才能安裝一個沒有遺留文件的乾淨的包?爲了測試我的版本:) – Seb

+0

在使用Xcode構建和安裝之前,從設備中刪除應用程序。 – Theo

+0

好吧,如果我明白,如果它的工作原理,它會適用於所有更新的用戶? – Seb

相關問題