Answers:
从未使用过,但我认为应该是这样的:
斯威夫特<= 2.x
NSBundle(forClass: self.dynamicType)
斯威夫特3.x
Bundle(for: type(of: self))
init?(identifier: String)
标识符作为目标的捆绑软件ID。值类型的另一种解决方案是在值类型内部声明一个空类。后一种解决方案的示例:Bundle(for: Foo.Bar.self)
其中Foo
-您的结构,Bar
-一些内部类。
type(of: self)
将返回ClassName.Type
并调用Bundle(for:)
到返回主束
斯威夫特3:
Bundle(for: type(of: self))
init?(identifier: String)
标识符作为目标的捆绑软件ID。如果您不想对捆绑包ID进行硬编码,请使用Bundle(for: Foo.Bar.self)
where- Foo
您的结构Bar
-一些内部类。
斯威夫特5
Bundle(for: Self.self)
为类的dynamicType加载xib
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "CellForAlert", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil).first as! UIView
view.frame = bounds
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.addSubview(view);
在Swift 3.0中,您可以使用:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}