调用 [NSBundle pathForResource] 时得到 nil(本地化问题)

Posted

技术标签:

【中文标题】调用 [NSBundle pathForResource] 时得到 nil(本地化问题)【英文标题】:Getting nil when calling [NSBundle pathForResource] (Localization Issue) 【发布时间】:2012-01-09 18:11:56 【问题描述】:

我在我的应用程序中本地化了当前仅支持英文的文本文件

我正在使用这段代码来获取路径:

 [[NSBundle mainBundle] pathForResource:@"Quotes" ofType:@"txt"]

在我的系统(Lion 10.7.2)上,它在使用任何语言时都会返回预期的路径(英语)

build/Beta/MyApp.app/Contents/Resources/en.lproj/Quotes.txt

但对于一些国际用户,此代码返回 nil。 我还没有确认它,但目前它只发生在雪豹用户身上。

有什么想法吗? 谢谢你。

编辑:

Mac OSX 10.7.2 德语 雪豹英语 Mac 10.6.8 德语 Mac OSX 10.7.2 中文

雪豹理论也没有了,有一个英文mac也返回nil,这很混乱。

【问题讨论】:

你试过 + (NSBundle *)bundleWithIdentifier:(NSString *)identifier 方法吗? 你的意思是检查它是否返回了正确的包? 【参考方案1】:

我明白了,我有一个工作区,包括 ios 和 mac 项目都共享这个文件。但是 ios 版本在 info.plist 中 Localization native development Region 键上的值为“en”,而 Mac 有“English” 我将 Mac 项目更改为“en”并更新了所有本地化文件。

在系统偏好设置中的列表语言中没有“英语”的用户 -> 语言和文本将为零。

感谢来自 Apple 论坛的 Ken Thomases

【讨论】:

以上是关于调用 [NSBundle pathForResource] 时得到 nil(本地化问题)的主要内容,如果未能解决你的问题,请参考以下文章

调用 [NSBundle pathForResource] 时得到 nil(本地化问题)

在部分模拟的对象上调用 + [NSBundle bundleForClass:] 返回的结果与未模拟的对象不同?

[NSBundle mainBundle] 声明的 CFString 对象

NSBundle

NSBundle

IOS NSBundle使用(访问文件夹)