iOS Pod导入的库资源文件加载

一:项目中添加的资源文件

正常情况下我们加载根目录下添加的资源文件调用mainBundle即可
[[NSBundle mainBundle] pathForResource:<#(nullable NSString *)#> ofType:<#(nullable NSString *)#>]
调试窗口获取到的路径:po [NSBundle mainBundle]
/Users/user/Library/Developer/CoreSimulator/Devices/3DE5B5B5-2418-4344-BD9B-9513A7793785/data/Containers/Bundle/Application/E8E42082-402F-403D-BDCA-B9AFC786E82A/Object-C.app/

二:pod导入第三方库中自带文件

在 CocoaPods 0.36 之后,由于 iOS 8 Dynamic Frameworks 特性的引入,CocoaPods 能打包 framework了。0.36 版的 release note很详细地说明了加入 framework 特性所带来的变化。一个显著区别就是当你的 pod 库以 framework 形式被使用时,你的资源不是被拷贝到 mainBundle 下,而是被放到 pod 的最终产物—— framework里。此时,你必须保证自己在访问这个 framework 的 bundle,而不是根目录的。 [NSBundle bundleForClass:<#ClassFromPodspec#>]
我在使用pod导入第三方库PinYin4Objc时发现的问题,总是获取不到编码文件
需要用到如下方法:
NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"unicode_to_hanyu_pinyin" ofType:@"txt"];
替换ChineseToPinyinResource文件中- (void)initializeResource方法中resourceName的获取方式
路径:
/Users/user/Library/Developer/CoreSimulator/Devices/3DE5B5B5-2418-4344-BD9B-9513A7793785/data/Containers/Bundle/Application/E8E42082-402F-403D-BDCA-B9AFC786E82A/Object-C.app/Frameworks/PinYin4Objc.framework/unicode_to_hanyu_pinyin.txt
这是路径就会到framework下

三:国际化和本地化

用方法NSLocalizedStringFromTableInBundle(<#key#>, <#tbl#>, <#bundle#>, <#comment#>)代替NSLocalizedString(key, comment)
bundle传当前framework目录

你可能感兴趣的:(iOS Pod导入的库资源文件加载)