NSBundle pathForResource不适用于子目录本地化?

时间:2014-11-12 04:11:36

标签: ios xcode localization nsbundle

我看到了很多关于[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

Isn' t pathForResource应该自动查找文字吗?

1 个答案:

答案 0 :(得分: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]];