Tengo un marco rápido que define una estructura:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
Sin embargo, parece que no puedo usar el inicializador sabio implícito de otro proyecto que importa la biblioteca. El error es 'CollectionTO' no se puede inicializar porque no tiene inicializadores accesibles. es decir, no está dando al usuario inicial implícito sabio implícito predeterminado la palabra clave pública.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Tengo que agregar mi propio método init así:
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;
}
}
... pero preferiría no hacerlo si hay otra manera de que alguien lo sepa?
fuente
Si bien no es posible tener el inicializador predeterminado para miembros, al menos puede hacer uno rápidamente con los siguientes pasos:
fuente
Hasta que Apple cambie esto y lo haga menos molesto, puede usar https://github.com/Bouke/SwiftInitializerGenerator (o cualquier otro) esto para la creación de inicializadores públicos. Entonces será menos trabajo. Lo probé y funciona. Xcode versión 10.0, High Sierra 10.13.6
fuente
Ahora tenemos una gema de rubí 💎 para analizar un archivo completo de modelo de datos rápidos, línea por línea, y agregar modificadores de acceso público, inicializadores predeterminados públicos y otros elementos en un archivo rápido de salida generado automáticamente.
Esta gema se llama swift_republic
Consulte la siguiente documentación para ejecutar esta gema:
https://github.com/mehul90/swift_republic
fuente
swift_republic
y funciona bien.