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 的路径时出现问题