2013-09-29 143 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

相关问题