2014-08-31 15 views
16

In Objective C ogni volta che ho avuto per accedere al pacchetto di test che chiamereiSwift - Ottieni NSBundle per il target di test?

[NSBundle bundleForClass:[ClassInTestTarget class]]; 

bundleForClass non è disponibile in Swift, quindi come faccio ad accedere il bundle di prova?

Il motivo per cui ho bisogno di questo è che per scrivere i test per un framework su cui sto lavorando devo usare uno stack di dati core in memoria. Inizialmente tutte le risorse sono state incluse in entrambi i target principale di riferimento e di test, ma poi mi sono trasferito tutti questi aiutanti di prova per testare unico obiettivo, e ora il codice qui sotto sta tornando a zero che non riesce tutti i miei test

let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd") 

risposta

41

Il codice Swift corrispondente è

// Swift 3 and later: 
Bundle(for: ClassInTestTarget.self) 

// Swift 1, 2: 
NSBundle(forClass: ClassInTestTarget.self) 

ClassInTestTarget.self ritorno all'oggetto classe per la classe "ClassInTestTarget".

+0

Questo funziona: http://stackoverflow.com/questions/24403718/swift-equivalent-objective-c-runtime-class –

+0

Ho questo funzionamento in alcune classi, ma in altri restituisce bundle con '/ Applications/Xcode .app/Contents/Developer/usr/bin' path. Qualche idea, perché/come risolverlo? –

+0

In particolare, si verifica solo con classi generiche ... –

Problemi correlati