Відповіді:
Ніколи не використовувався, але я думаю, це має бути так:
Швидкий <= 2.x
NSBundle(forClass: self.dynamicType)
Швидкий 3.x
Bundle(for: type(of: self))
init?(identifier: String)
де ідентифікатор - ідентифікатор пакета вашої цілі. Іншим рішенням для типів значень є оголошення порожнього класу всередині вашого типу значень. Приклад останнього рішення: Bundle(for: Foo.Bar.self)
де Foo
- ваша структура, Bar
- якийсь внутрішній клас.
type(of: self)
повернеться ClassName.Type
і заклик Bundle(for:)
до цього повертає основний пакет
Швидкий 3:
Bundle(for: type(of: self))
init?(identifier: String)
де ідентифікатор - ідентифікатор пакета вашої цілі. Якщо ви не хочете жорстко кодувати ідентифікатор пакета, використовуйте Bundle(for: Foo.Bar.self)
де Foo
- ваш структура, Bar
- якийсь внутрішній клас.
let bundle = NSBundle(forClass:object_getClass(self))
Швидкий 5
Bundle(for: Self.self)
Завантаження xib для 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);
У Swift 3.0 ви можете використовувати:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}