swift-init nicht sichtbar in objective-C
Ich versuche zu schaffen init
Funktionen in Swift
und erstellen von Instanzen von Objective-C
. Das problem ist, dass ich nicht sehen, es in Project-Swift.h
Datei und ich bin nicht in der Lage zu finden, die Funktion während der Initialisierung. Ich habe eine Funktion wie folgt definiert:
public init(userId: Int!) {
self.init(style: UITableViewStyle.Plain)
self.userId = userId
}
Ich habe sogar versucht, indem @objc(initWithUserId:)
und ich erhalte die gleiche Fehlermeldung wieder. Gibt es etwas, was ich bin fehlt? Wie bekomme ich den Konstruktor sichtbar zu Objective-C
code?
Lese ich die unten dies:
How to write Init-Methode in Swift
Wie definieren Sie optional Methoden im Swift-Protokoll?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem, das Sie sehen, ist, dass Swift nicht Brücke optionaler Wert-Typen --
Int
ein Werttyp ist, soInt!
können nicht überbrückt werden. Optional Referenz-Typen (d.h., jede Klasse) - Brücke korrekt, da Sie immernil
in Objective-C. Ihr zwei Optionen, um die parameter nicht optional sind, in dem Fall wäre es überbrückt, ObjC alsint
oderNSInteger
:Oder verwenden Sie einen optionalen
NSNumber?
da, die überwunden werden kann als ein optionaler Wert:Beachten Sie jedoch, Sie sind nicht eigentlich die Behandlung der parameter wie ein optional - es sei denn
self.userId
ist auch eine optionale Sie sich für die Einstellung Potenzial runtime stürzt ab, auf diese Weise.verwenden Sie diese ein: