Ich habe ein schnelles Framework, das eine Struktur definiert:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
Ich kann jedoch nicht den impliziten Element-Initialisierer aus einem anderen Projekt verwenden, das die Bibliothek importiert. Der Fehler ist, dass 'CollectionTO' nicht initialisiert werden kann, da keine zugänglichen Initialisierer vorhanden sind. Das heißt, es gibt dem standardmäßigen impliziten Element-Initialisierer nicht das öffentliche Schlüsselwort.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Ich muss meine eigene Init-Methode wie folgt hinzufügen:
public struct CollectionTO {
var index: Order
var title: String
var description: String
public init(index: Order, title: String, description: String) {
self.index = index;
self.title = title;
self.description = description;
}
}
... aber ich möchte lieber nicht, ob es einen anderen Weg gibt, den jemand kennt?
quelle
Obwohl es nicht möglich ist, den Standardinitialisierer für Mitglieder zu verwenden, können Sie mit den folgenden Schritten schnell einen erstellen:
quelle
Bis Apple dies ändert und es weniger nervig macht, können Sie https://github.com/Bouke/SwiftInitializerGenerator (oder einen anderen) dieses Element für die Erstellung öffentlicher Initialisierer verwenden. Es wird also weniger Arbeit sein. Versuchte es und es funktioniert. Xcode Version 10.0, High Sierra 10.13.6
quelle
Wir haben jetzt ein Rubin-Juwel, um eine vollständige schnelle Datenmodelldatei zeilenweise zu analysieren und Modifikatoren für den öffentlichen Zugriff, Standardinitialisierer für öffentliche Mitglieder und andere Dinge in einer separaten, automatisch generierten, schnellen Ausgabe-Datei hinzuzufügen.
Dieses Juwel heißt swift_republic
Bitte lesen Sie die folgende Dokumentation, um dieses Juwel auszuführen:
https://github.com/mehul90/swift_republic
quelle
swift_republic
und funktioniert einwandfrei.