J'ai un framework rapide qui définit une structure:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
Cependant, je n'arrive pas à utiliser l'initialiseur implicite de membre sage d'un autre projet qui importe la bibliothèque. L'erreur est «CollectionTO» ne peut pas être initialisé car il n'a pas d'initialiseurs accessibles. c'est-à-dire qu'il ne donne pas à l'initialiseur implicite par défaut du membre sage le mot clé public.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Je dois ajouter ma propre méthode init comme ceci:
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;
}
}
... mais je préférerais pas s'il y a une autre façon que quelqu'un sait?
la source
Bien qu'il ne soit pas possible d'avoir l'initialiseur membre par défaut au moins, vous pouvez en créer un rapidement en suivant les étapes suivantes:
la source
Jusqu'à ce qu'Apple change cela et le rende moins ennuyeux, vous pouvez utiliser https://github.com/Bouke/SwiftInitializerGenerator (ou tout autre) cette chose pour la création d'initialiseurs publics. Ce sera donc moins de travail. Je l'ai essayé et ça marche. Xcode version 10.0, High Sierra 10.13.6
la source
Nous avons maintenant une gemme ruby 💎 pour analyser un fichier de modèle de données rapide complet, ligne par ligne, et ajouter des modificateurs d'accès public, des initialiseurs par défaut publics pour les membres, et d'autres choses dans un fichier rapide de sortie généré automatiquement.
Ce joyau s'appelle swift_republic
Veuillez consulter la documentation suivante pour exécuter ce gem:
https://github.com/mehul90/swift_republic
la source
swift_republic
et fonctionne bien.