Antworten:
Nie benutzt, aber ich denke es sollte so sein:
Swift <= 2.x.
NSBundle(forClass: self.dynamicType)
Swift 3.x.
Bundle(for: type(of: self))
init?(identifier: String)
wo der Bezeichner die Bundle-ID Ihres Ziels ist. Eine andere Lösung für Werttypen besteht darin, eine leere Klasse in Ihrem Werttyp zu deklarieren. Beispiel für die letztere Lösung: Bundle(for: Foo.Bar.self)
wo Foo
- Ihre Struktur, Bar
- eine innere Klasse.
type(of: self)
wird zurückkehren ClassName.Type
und ein Aufruf Bundle(for:)
dazu gibt das
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
wo der Bezeichner die Bundle-ID Ihres Ziels ist. Wenn Sie die Bundle-ID nicht fest codieren möchten, verwenden Sie Bundle(for: Foo.Bar.self)
where Foo
- your struct, Bar
- eine innere Klasse.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Wenn Sie an einer Klasse arbeiten, dann
Bundle(for: type(of: self))
Manchmal arbeiten Sie in einer Struktur, dann müssen Sie eine beliebige Klasse im Bundle verwenden
Bundle(for: AnyClassInTheBundle.self)
Laden der xib für dynamicType der Klasse
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);
In Swift 3.0 können Sie Folgendes verwenden:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}