我正在为iOS开发一个框架,它附带了一些数据文件。为了将它们加载到Dictionary
中,我做了如下操作:
public func loadPListFromBundle(filename: String, type: String) -> [String : AnyObject]? {
guard
let bundle = Bundle(for: "com.myframework")
let path = bundle.main.path(forResource: filename, ofType: type),
let plistDict = NSDictionary(contentsOfFile: path) as? [String : AnyObject]
else {
print("plist not found")
return nil
}
return plistDict
}
如果我在有框架的操场上使用这个,它就能按预期工作。
但是如果我使用嵌入在应用程序中的框架,它就不再工作了,“路径”现在指向应用程序的捆绑包,而不是框架的捆绑包。
我如何确保框架的包被访问?
**EDIT:**以上代码位于框架中,而不是应用程序中。
**EDIT2:**上面的代码是一个实用函数,不是结构或类的一部分。
5条答案
按热度按时间tag5nh1u1#
使用
Bundle(for:Type)
:或者按
identifier
(框架包ID)搜索包:bweufnob2#
雨燕5
ht4b089n3#
尝试以下代码以获取自定义捆绑包:
更新
如果在您的框架中,请尝试以下操作:
nmpmafwu4#
只需指定资源的类名,下面的函数将为您提供与类关联的Bundle对象,因此,如果类与框架关联,它将提供框架的bundle。
bxjv4tth5#
出发地:Source
---更新---
它提供了3种关于如何获得正确的bundle的注解用法,这是非常有用的,特别是当你正在开发自己的框架或使用Cocoapods时。