Risposte:
Mai usato, ma penso che dovrebbe essere questo:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
dove identificatore è l'ID bundle del tuo target. Un'altra soluzione per i tipi di valore è dichiarare una classe vuota all'interno del tipo di valore. Esempio di quest'ultima soluzione: Bundle(for: Foo.Bar.self)
dove Foo
- la tua struttura, Bar
- una classe interna.
type(of: self)
tornerà ClassName.Type
e chiamando Bundle(for:)
a quello restituirà il pacchetto principale
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
dove identificatore è l'ID bundle del tuo target. Se non vuoi codificare l'ID del bundle, usa Bundle(for: Foo.Bar.self)
dove Foo
- la tua struttura Bar
- una classe interna.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Se stai lavorando a una lezione allora
Bundle(for: type(of: self))
A volte potresti lavorare in una struttura, quindi devi usare qualsiasi classe nel bundle
Bundle(for: AnyClassInTheBundle.self)
Caricamento di xib per dynamicType della classe
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, puoi utilizzare:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}