Was ist schnelles Äquivalent zum nächsten Code:
[NSBundle bundleForClass:[self class]]
Ich benötige Ressourcen aus dem Testpaket laden (JSON-Daten).
Nie benutzt, aber ich denke es sollte so sein:
Swift <= 2.x.
NSBundle(forClass: self.dynamicType)
Swift 3.x.
Bundle(for: type(of: self))
init?(identifier: String)
wo der Bezeichner die Bundle-ID Ihres Ziels ist. Eine andere Lösung für Werttypen besteht darin, eine leere Klasse in Ihrem Werttyp zu deklarieren. Beispiel für die letztere Lösung:Bundle(for: Foo.Bar.self)
woFoo
- Ihre Struktur,Bar
- eine innere Klasse.type(of: self)
wird zurückkehrenClassName.Type
und ein AufrufBundle(for:)
dazu gibt dasSwift 3:
quelle
init?(identifier: String)
wo der Bezeichner die Bundle-ID Ihres Ziels ist. Wenn Sie die Bundle-ID nicht fest codieren möchten, verwenden SieBundle(for: Foo.Bar.self)
whereFoo
- your struct,Bar
- eine innere Klasse.Ich persönlich mag:
quelle
quelle
Swift 5
quelle
Die ausgewählte Antwort funktionierte bei einer statischen Methode einer UIView-Unterklasse nicht, aber ich fand Folgendes:
Dies funktioniert auch, wenn Sie das
Bundle
innerhalb eines Testziels erhalten möchten .quelle
Wenn Sie an einer Klasse arbeiten, dann
Manchmal arbeiten Sie in einer Struktur, dann müssen Sie eine beliebige Klasse im Bundle verwenden
quelle
Laden der xib für dynamicType der Klasse
quelle
In Swift 3.0 können Sie Folgendes verwenden:
quelle