2014-08-31 11 views
16

In Objective-C, wenn ich den Test Bündel zugreifen musste würde ichSwift - Get NSBundle für Testziel?

nennen
[NSBundle bundleForClass:[ClassInTestTarget class]]; 

bundleForClass in Swift nicht verfügbar ist, so wie greife ich auf das Testbündel?

Der Grund, warum ich das brauche, ist, dass ich um einen Test für ein Framework zu schreiben, an dem ich arbeite, muss ich einen im Speicherkern Datenstapel verwenden. Zunächst werden alle Ressourcen wurden in den beiden Hauptziel und Testziel enthalten, aber dann zog ich alle diese Test Helfer nur Ziel zu testen, und jetzt unter dem Code nil dem Rückkehr nicht alle meine Tests

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

Antwort

41

Der entsprechende Swift Code

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

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

ClassInTestTarget.self Rückkehr des Klassenobjekts für den "ClassInTestTarget" -Klasse.

+0

Das funktioniert: http://stackoverflow.com/questions/24403718/swift-äquivalent-objective-cruntime-class –

+0

Ich habe das in einigen Klassen arbeiten, aber in anderen gibt es Bundle mit '/ Anwendungen/Xcode .app/Inhalt/Entwickler/usr/bin' Pfad. Irgendwelche Ideen warum/wie man es repariert? –

+0

Speziell - nur passiert mit generischen Klassen ... –