2014-09-03 11 views

उत्तर

165

कभी उपयोग नहीं किया है, लेकिन मैं लगता है कि यह इस होना चाहिए:

स्विफ्ट < = 2.x

NSBundle(forClass: self.dynamicType) 

स्विफ्ट 3.x

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

एक्सकोड के मौजूदा संस्करण में स्वत: पूर्ण कार्य करता है जैसे कि यह नहीं पता कि आप किस बारे में बात कर रहे हैं, लेकिन यह वास्तव में काम करता है। –

+1

यानो। मुझे बस इस जगह से प्यार है! धन्यवाद! संस्करण 2.1 में –

+3

: एनएसबंडल (forClass: self) – zwebie

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

मैं व्यक्तिगत रूप से पसंद है:

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

लौटाता है यह स्विफ्ट 3.1 (एक्सकोड 8.3) – adib

3

वर्ग के dynamicType

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

के लिए xib लोड हो रहा है स्विफ्ट 3:

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

के लिए सबसे अच्छा काम करता है समाधान' मूल्य प्रकार के लिए काम नहीं करते हैं। 'Init? (पहचानकर्ता: स्ट्रिंग) का उपयोग करने पर विचार करें, जहां पहचानकर्ता आपके लक्ष्य की बंडल आईडी है। यदि आप बंडल आईडी को हार्डकोड नहीं करना चाहते हैं, तो 'बंडल (के लिए: Foo.Bar.self)' का उपयोग करें, जहां 'Foo' - आपकी संरचना,' बार '- कुछ आंतरिक वर्ग। –

1

स्विफ्ट 3.0 में, आप उपयोग कर सकते हैं:

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

यह सिर्फ दुर्घटनाग्रस्त हो जाता है –

0

चयनित जवाब एक UIView उपवर्ग के एक स्थिर विधि में मेरे लिए काम नहीं किया था, लेकिन मैं इस पाया:

Bundle(for: self.classForCoder) 

यह तब भी काम करता है जब आप परीक्षण लक्ष्य के भीतर Bundle प्राप्त करना चाहते हैं।