2014-09-03 10 views

risposta

165

mai usato, ma io penso che dovrebbe essere questo:

Swift < = 2.x

NSBundle(forClass: self.dynamicType) 

3.x Swift

Bundle(for: type(of: self)) 
+34

Il completamento automatico della versione corrente di Xcode si comporta come se non avesse idea di cosa si stia parlando, ma funziona davvero. –

+1

Yanno. Adoro questo posto! Grazie! –

+3

nella versione 2.1: NSBundle (forClass: self) – zwebie

8
let bundle = NSBundle(forClass:object_getClass(self)) 
9

personalmente mi piace:

let bun = NSBundle(forClass: self.classForCoder) 
+0

Funziona meglio con Swift 3.1 (Xcode 8.3) – adib

3

Caricamento del XI ter 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); 
28

Swift 3:

Bundle(for: type(of: self)) 
+1

La soluzione doesn ' t lavoro per i tipi di valore. Prendi in considerazione l'uso di 'init? (Identificatore: stringa)' dove identificatore è l'ID del gruppo del tuo target. Se non si desidera codificare l'ID del bundle, utilizzare 'Bundle (per: Foo.Bar.self)' dove 'Foo' - la propria struct,' Bar' - una classe interna. –

1

In Swift 3.0, è possibile utilizzare:

func kZWGetBundle() -> Bundle{ 
    return Bundle(for: AnyClass.self as! AnyClass) 
} 
+0

Si blocca –

0

La risposta selezionata non ha funzionato per me in un metodo statico di una sottoclasse UIView, ma ho trovato questo:

Bundle(for: self.classForCoder) 

Funziona anche quando si desidera ottenere Bundle all'interno di una destinazione di prova.

Problemi correlati