Respuestas:
Nunca usado, pero creo que debería ser esto:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
donde el identificador es la identificación del paquete de su objetivo. Otra solución para los tipos de valor es declarar una clase vacía dentro de su tipo de valor. Ejemplo de la última solución: Bundle(for: Foo.Bar.self)
donde Foo
- su estructura, Bar
- alguna clase interna.
type(of: self)
volverá ClassName.Type
y llamar Bundle(for:)
a eso devuelve el paquete principal
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
donde el identificador es la identificación del paquete de su objetivo. Si no desea codificar el ID del paquete, use Bundle(for: Foo.Bar.self)
where Foo
- your struct, Bar
- some class.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Si estás trabajando en una clase, entonces
Bundle(for: type(of: self))
A veces puede trabajar en una estructura, luego debe usar cualquier clase en el paquete
Bundle(for: AnyClassInTheBundle.self)
Cargando el xib para dynamicType de la clase
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);
En Swift 3.0, puede usar:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}