Eu tenho uma estrutura rápida que define uma estrutura:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
No entanto, não consigo usar o inicializador sábio de membro implícito de outro projeto que importa a biblioteca. O erro é 'CollectionTO' não pode ser inicializado porque não possui inicializadores acessíveis. ou seja, não está dando ao inicializador implícito padrão do membro implícito a palavra-chave pública.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Estou tendo que adicionar meu próprio método init da seguinte forma:
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;
}
}
... mas prefiro que não, se houver outra maneira de alguém saber?
fonte
Embora não seja possível ter o inicializador padrão para membros, pelo menos, você pode fazer um rapidamente com as seguintes etapas:
fonte
Até a Apple mudar isso e torná-lo menos irritante, você pode usar https://github.com/Bouke/SwiftInitializerGenerator (ou qualquer outro) para criar criadores de inicializadores públicos. Portanto, será menos trabalho. Tentei e funciona. Xcode Versão 10.0, High Sierra 10.13.6
fonte
Agora temos um ruby gem 💎 para analisar um arquivo de modelo de dados rápido completo, linha por linha, e adicionar modificadores de acesso público, inicializadores padrão por membros públicos e outras coisas em um arquivo rápido de saída gerado automaticamente.
Essa gema é chamada swift_republic
Consulte a seguinte documentação para executar esta gema:
https://github.com/mehul90/swift_republic
fonte
swift_republic
e estou funcionando bem.