2014-08-31 31 views
16

在Objective C中,每當我訪問測試包我會打電話Swift - 獲取測試目標的NSBundle?

[NSBundle bundleForClass:[ClassInTestTarget class]]; 

bundleForClass不斯威夫特用,所以我怎麼訪問測試包?

我需要這個的原因是,爲了編寫我正在研究的框架的測試,我必須使用內存核心數據堆棧。最初,所有的資源都包含在這兩個主要目標和測試目標,但後來我感動了所有這些測試幫助者只測試目標,現在下面的代碼返回nil它失敗了所有的考試

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

回答

41

對應的銀行代碼是

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

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

ClassInTestTarget.self收益類對象爲 「ClassInTestTarget」 級。

+0

這工作:http://stackoverflow.com/questions/24403718/swift-equivalent-objective-c-runtime-class – 2015-06-30 22:38:14

+0

我有這個工作在一些類,但在其他人,它返回捆綁'/應用程序/ Xcode .app /目錄/ Developer/usr/bin'路徑。任何想法爲什麼/如何解決它? – 2016-06-27 21:28:22

+0

具體 - 只發生在泛型類... – 2016-06-27 21:44:41