iOS Pod导入的库资源文件加载
发布网友
发布时间:2022-11-29 17:38
我来回答
共1个回答
热心网友
时间:2023-10-28 06:09
正常情况下我们加载根目录下添加的资源文件调用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/
在 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目录