5

我在我的项目中添加了一个新的意大利语本地化,然后我本地化了一个 xib 文件以开始项目的翻译。问题是,现在当我在模拟器中运行我的项目时,没有找到任何 xib。

(GAIUncaughtExceptionHandler.m:41):未捕获的异常:无法在包中加载 NIB:'NSBundle ...

我正在使用 initWithNibName 实例化这个 xib 的文件所有者。

我已经尝试过 xib 的纯本地化和基本本地化,但它们都不起作用。

我正在像这样初始化所有者:

[[SPConfigViewController alloc] initWithNibName:@"SPConfigViewController" bundle:nil];

编辑:

在我创建了 xib 的本地化版本后,我决定关闭 XCode 并再次打开它,它工作......

4

5 回答 5

25

我有同样的经历,真是一次心灵之旅……

过程:

(假设一个项目在项目信息中选择了“使用基础国际化”)

  1. 单击File Navigator中的 .xib 资源,它会加载 Interface Builder
  2. 使用文件检查器,单击Localize按钮
  3. 一个模态显示询问您想使用哪种语言(我无法使用“Base”,所以我选择了“English”)
  4. 现在在File Inspector的 Localized 部分, English 旁边有一个复选标记,Base 旁边没有,所以我检查了 Base
  5. 然后我得到了一个选择器来选择我希望如何本地化英语:Interface Builder Cocoa Touch XIBLocalizable Strings

好吧,我乐观地认为这会起作用,所以运行
......然后崩溃

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle < /var/mobile/Applications/_____/_____.app>(已加载)”,名称为“__MY NIB STRING HERE___ ''

清理,构建,运行 -> 崩溃
选项键 + 清理,构建,运行 -> 崩溃
选项键 + 清理,删除应用程序,构建,运行 -> 崩溃
选项键 + 清理,重置模拟器,诅咒,构建,运行 -> 崩溃

退出 Xcode,重新启动 Xcode,构建,运行 -> 工作!哇。

我已经针对这些问题打开了一个错误报告,如果您遇到此问题,您将复制它,以便开发人员工具团队知道它是一个反复出现的问题,我将不胜感激。

于 2013-05-20T03:48:50.657 回答
1

这似乎是由于本地化 xib 文件将其移动到项目根目录内的新目录(base.lproj),之后 xcode 无法再找到 xib 文件。

我通过转到项目文件,选择我的目标,转到构建阶段选项卡来解决这个问题。然后,如果您展开“复制捆绑资源”文件夹,您应该注意到在 NSException 中被投诉的文件是红色的。我删除了这个文件并读取了在“base.lproj”子文件夹中找到的本地化版本,这似乎解决了这个问题。

据我所知,这需要为每个本地化的 xib 完成,这是大量不必要的浪费(感谢 xcode ......)但是,嘿,应用程序不再崩溃。

于 2013-09-30T11:15:21.133 回答
0

确认您已为所有语言本地化文件。我没有检查英语,它会以这种方式失败。在我检查英语然后重新添加 cob 之前,我无法让它正确显示在“复制捆绑资源”中。你可以说它没问题,因为它不会是红色的,它会说“... in/MyProject/(localization).lproj”,当然,MyProject 将是你的项目的名称。

于 2014-01-11T02:31:15.873 回答
0

你可以这样做:

[[YourViewController alloc] initWithNibName:@"YouViewController.xib" bundle:nil]

不要为视图控制器的笔尖名称使用扩展名,请尝试如下:

[[YourViewController alloc] initWithNibName:@"YouViewController" bundle:nil]
于 2013-04-16T19:12:33.950 回答
0

就我而言,我将其中一个本地化文件夹从 Base.lproj 重命名为 base.lproj。将其重命名并在 .pbxproj 中将所有出现的 base 替换为 Base 后,它就可以工作了!

于 2018-10-25T10:10:30.913 回答