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

Posted

技术标签:

【中文标题】NSBundle pathForResource 不适用于子目录本地化?【英文标题】:NSBundle pathForResource doesn't work for subdirectory localization? 【发布时间】: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 构建/运行时,有时旧文件会保留在原来的位置,因此请尝试从设备/模拟器中删除应用程序,进行清理,然后重新构建。 【参考方案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]];

【讨论】:

以上是关于NSBundle pathForResource 不适用于子目录本地化?的主要内容,如果未能解决你的问题,请参考以下文章

NSBundle pathForResource is NULL 取不到值

使用 [NSBundle mainBundle] pathForResource: ofType:inDirectory: 访问文件

NSBundle pathForResource 返回 nil 和子目录

iOS:[NSBundle pathForResource:ofType:inDirectory] ​​返回 nil?

使用 [[NSBundle mainBundle] pathForResource 获取 .plist 的路径时出现问题

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