NSBundle - (尚未加载)错误

Posted

技术标签:

【中文标题】NSBundle - (尚未加载)错误【英文标题】:NSBundle - (not loaded yet) Error 【发布时间】:2011-12-08 22:52:47 【问题描述】:

我正在尝试获取与 NSLocalizedStringFromTableInBundle 一起使用的字符串文件表。

我正在使用这种方法:

+(NSBundle*)getBundleForLang:(NSString*)lang
     //get the path to the bundle
    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"localizable" ofType:@"strings" inDirectory:nil forLocalization:lang];
    NSLog(@"bundlePath = %@",bundlePath);

    //load the bundle
    NSBundle *langBundle = [[NSBundle alloc] initWithPath:[bundlePath stringByDeletingLastPathComponent]];
    NSLog(@"langBundle = %@",langBundle);
    return langBundle;

虽然它在模拟器上运行良好,但当我尝试在 iPhone 设备上使用它时,我得到了这个 NSLog:

2011-12-09 00:40:14.533 MyApp[12754:707] langBundle = NSBundle 
</var/mobile/Applications/915E6BCB-EC44-4F1D-891B-EF68E2FA89C2/MyApp.app/he.lproj> 
(not yet loaded)

为什么没有加载,问题出在哪里?

谢谢

沙尼

【问题讨论】:

你的文件不应该叫Localizable.strings而不是localizable.strings吗? 【参考方案1】:

检查文件路径的大小写。 模拟器(默认)不区分大小写,而设备是。 这可能会导致模拟器成功找到文件,但设备失败。

【讨论】:

这就是问题所在。有趣的是,我将文件称为“可本地化”,因此案例确实匹配。但似乎名字在这里很重要。【参考方案2】:

这不是错误。字符串包,例如 en.lproj,不包含可执行文件。当你尝试[bundle loadAndReturnError:] 时,它会失败,loadAndReturnError: 的document 会告诉你原因。

【讨论】:

【参考方案3】:

确保捆绑包包含捆绑包标识符。 如果没有,尽管路径可用,但无法从那里加载资源。

【讨论】:

以上是关于NSBundle - (尚未加载)错误的主要内容,如果未能解决你的问题,请参考以下文章

MonoTouch - 无法在包中加载 NIB:“NSBundle”

NSBundle 加载一个 NSViewController

NSBundle 未加载 - 目标 C

未捕获的错误:尚未为上下文加载模块名称“电子”:_。使用要求([])

Django 仅使用 pycharm 测试错误 - 不是终端 |应用尚未加载

NSBundle的加载和卸载