Yanıtlar:
Hiç kullanılmadı, ama bence şu olmalı:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
Tanımlayıcının hedefinizin paket kimliği olduğu yeri kullanmayı düşünün . Değer türleri için başka bir çözüm, değer türünüzün içinde boş bir sınıf bildirmektir. İkinci çözüme örnek: Bundle(for: Foo.Bar.self)
nerede Foo
- yapınız, Bar
- bazı iç sınıflar.
type(of: self)
dönecek ClassName.Type
ve arama Bundle(for:)
buna getiri ana paket
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
Tanımlayıcının hedefinizin paket kimliği olduğu yeri kullanmayı düşünün . Paket kimliğini sabit kodlamak istemiyorsanız, Bundle(for: Foo.Bar.self)
nerede Foo
- yapınız, Bar
- bir iç sınıf kullanın.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Bir sınıfta çalışıyorsanız o zaman
Bundle(for: type(of: self))
Bazen bir yapı içinde çalışabilirsiniz, sonra paketteki herhangi bir sınıfı kullanmanız gerekir
Bundle(for: AnyClassInTheBundle.self)
Sınıfın dynamicType'ı için xib'i yükleme
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);
Swift 3.0'da şunları kullanabilirsiniz:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}