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目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容