现有路径的 NSBundle“尚未加载”
Posted
技术标签:
【中文标题】现有路径的 NSBundle“尚未加载”【英文标题】:NSBundle "not yet loaded" for existing path 【发布时间】:2012-10-28 10:03:14 【问题描述】:我正在尝试实现一种更改应用程序内部语言的方法。
我想我已经弄明白了,但由于某种原因,该文件夹没有作为捆绑包装运
我有一个名为 kh.lproj 的文件夹
NSString *path = [[NSBundle mainBundle] pathForResource:newLanguage ofType:@"lproj"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
bundle = [NSBundle bundleWithPath:path];
DLOG(@"Language: %@ from path %@ (%@)", newLanguage, path, bundle);
我的 dlog 的输出是
语言:kh 来自路径 ......../F1AA1E74-A014-4331-BD1B-D05D0E54AFF3/console.app/kh.lproj (NSBundle <.......> (尚未加载))
在 iPhone 和模拟器中(当然路径不同)。
我已经检查了 .app 文件夹并且 kh.lproj 文件夹在那里。 (小写)。
有人知道为什么会这样吗?如果我尝试加载一个不存在的文件,它只会忽略它并且不要尝试加载它。
编辑
如果有任何帮助,当我使用 loadAndReturnError:(NSError) 时,我会收到消息:
NSLocalizedFailureReason=找不到捆绑包的可执行文件。, NSLocalizedDescription=无法加载包“kh.lproj” 因为找不到它的可执行文件。, NSBundlePath=......./A65E8399-6CDB-4CAE-9074-803125E78BBA/storeconsole.app/kh.lproj
这个错误信息是什么意思
【问题讨论】:
你检查它是否被标记为正确的目标?有时添加资源会导致无法自动检查目标。 是的,它处于复制捆绑资源构建阶段。而且如上所述,它在我编译后得到的.app文件夹中,所以它肯定在那里 对不起,那我目前还没有头绪。 我认为加载只对使用包的可执行代码很重要。如果您只使用资源,则无需担心。 developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… 我遇到了同样的问题。我想使用自己的框架包中的 xib,它不包含可执行代码,但仍然无法正常工作。不明白是什么问题。 【参考方案1】:看起来我在调用时得到了我想要的东西
[bundle localizedStringForKey:key value:NULL table:nil];
【讨论】:
上面的代码总是加载英文或者你的手机语言。 按键输入是什么?【参考方案2】:如果字符串文件有错误,例如缺少分号或不完整的注释标记,也可能存在缺陷。
Xcode 不检查文件的语法错误。
【讨论】:
以上是关于现有路径的 NSBundle“尚未加载”的主要内容,如果未能解决你的问题,请参考以下文章
localizable.strings !!!!捆绑(路径)尚未加载