调用 [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:] 返回的结果与未模拟的对象不同?