Respostas:
Nunca usei, mas acho que deveria ser o seguinte:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
onde identificador é o ID do pacote do seu destino. Outra solução para tipos de valor é declarar uma classe vazia dentro do seu tipo de valor. Exemplo da última solução: Bundle(for: Foo.Bar.self)
where Foo
- your struct, Bar
- alguma classe interna.
type(of: self)
vai voltar ClassName.Type
e chamando Bundle(for:)
para que os retornos do pacote principal
Swift 3:
Bundle(for: type(of: self))
init?(identifier: String)
onde identificador é o ID do pacote do seu destino. Se você não deseja codificar o código do pacote, use Bundle(for: Foo.Bar.self)
where Foo
- sua estrutura, Bar
- alguma classe interna.
let bundle = NSBundle(forClass:object_getClass(self))
Swift 5
Bundle(for: Self.self)
Se você estiver trabalhando em uma aula, então
Bundle(for: type(of: self))
Às vezes, você pode trabalhar em uma estrutura e, em seguida, precisa usar qualquer classe no pacote
Bundle(for: AnyClassInTheBundle.self)
Carregando o xib para dynamicType da classe
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);
No Swift 3.0, você pode usar:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}