有没有办法知道哪个bundle对应一个源代码文件?
我想要完成的是以下内容:
我在Framework X中有一个source.swift / source.m文件。这个文件有一个函数,例如:如果它在 Swift - > whoIsMyEnclosingBundle() -> NSBundle
我需要这个功能才能正常工作,这样我就可以在该框架内加载我的故事板。
我想让这个功能变得通用,所以没有对该软件包的名称进行硬编码
答案 0 :(得分:1)
我认为你正在寻找+[NSBundle bundleForClass:]
。
如果你不在课堂内,那么你可以使用+bundleWithIdentifier:
(这意味着你需要提前知道标识符)。文档建议需要自己的bundle的框架方法。
答案 1 :(得分:0)
在Swift中
有几种方法:
第一个是每次都可以使用的那个:
let bundle = NSBundle(forClass: [the class you are in].self)
接下来的两项仅适用于某些情况:
- 适用于未标记为class
let bundle = NSBundle(forClass: self.dynamicType)
- 适用于从Objective-C
桥接的类let bundle = NSBundle(forClass: [the class you are in].classForCoder())
有关self.dynamicType
和self
的详细解释,请进入this answer: