Quel est l'équivalent rapide du code suivant:
[NSBundle bundleForClass:[self class]]
J'ai besoin de charger des ressources à partir du bundle de test (données JSON)
Jamais utilisé, mais je pense que ça devrait être ça:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
où identifier est l'ID de groupe de votre cible. Une autre solution pour les types valeur consiste à déclarer une classe vide dans votre type valeur. Exemple de cette dernière solution:Bundle(for: Foo.Bar.self)
oùFoo
- votre structure,Bar
- une classe interne.type(of: self)
reviendraClassName.Type
et appelleraBundle(for:)
à qui renvoie le paquet principalSwift 3:
la source
init?(identifier: String)
où identifier est l'ID de groupe de votre cible. Si vous ne voulez pas coder en dur l'ID du bundle, utilisezBundle(for: Foo.Bar.self)
whereFoo
- votre structure,Bar
- une classe interne.J'aime personnellement:
la source
la source
Swift 5
la source
La réponse sélectionnée n'a pas fonctionné pour moi dans une méthode statique d'une sous-classe UIView, mais j'ai trouvé ceci:
Cela fonctionne également lorsque vous souhaitez obtenir le
Bundle
dans une cible de test.la source
Si vous travaillez sur une classe alors
Parfois, vous pouvez travailler dans une structure, puis vous devez utiliser n'importe quelle classe du bundle
la source
Chargement du xib pour dynamicType de la classe
la source
Dans Swift 3.0, vous pouvez utiliser:
la source