【问题标题】:NSBundle pathForResource doesn't work for subdirectory localization?NSBundle pathForResource 不适用于子目录本地化?
【发布时间】:2014-11-12 04:11:35
【问题描述】:

我看到很多关于 [NSBundle MainBundle] pathForResource 的问题(是否使用 inDirectory),但我的情况似乎不同。

我的问题是:是的,如果没有本地化,它适用于子目录中的任何文件。例如,当我使用时,它会返回文件data/a/words.txt 的正确路径

[[NSBundle mainBundle] pathForResource:@"words.txt" ofType:nil inDirectory:@"data/a"]

但是,我将words.txt本地化后,假设真正的路径变为:data/a/en.lproj/words.txt,那么上面的代码就找不到路径了。

我检查了.app包中的文件,该文件已复制到正确的路径(data/a/en.lproj),只是代码找不到它。

我正在使用 XCode 5.1.1

pathForResource 不是应该自动查找文本吗?

【问题讨论】:

  • 当您从 Xcode 构建/运行时,有时旧文件会保留在原来的位置,因此请尝试从设备/模拟器中删除应用程序,进行清理,然后重新构建。

标签: ios xcode localization nsbundle


【解决方案1】:

尝试将forLocalization 添加到pathForResource,如下所示:

NSArray* availableLocalizations = [[NSBundle mainBundle] localizations];
NSArray* userPrefered = [NSBundle preferredLocalizationsFromArray:availableLocalizations forPreferences:[NSLocale preferredLanguages]];

NSString *indexPath = [[NSBundle mainBundle] pathForResource:@"words" ofType:@"txt" inDirectory:@"data/a" forLocalization:[userPrefered objectAtIndex:0]];

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多