У меня есть быстрый каркас, который определяет структуру:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
Тем не менее, я не могу использовать неявный член мудрый инициализатор из другого проекта, который импортирует библиотеку. Ошибка «CollectionTO» не может быть инициализирована, поскольку у нее нет доступных инициализаторов. то есть он не дает неявному члену по умолчанию инициализировать ключевое слово public.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Я должен добавить свой собственный метод init следующим образом:
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;
}
}
... но я бы предпочел нет, если есть другой способ, кто-нибудь знает?
источник
Хотя по умолчанию нет возможности использовать элементный инициализатор по умолчанию, вы можете сделать его быстро, выполнив следующие шаги:
источник
Пока Apple не изменит это и не сделает его менее раздражающим, вы можете использовать https://github.com/Bouke/SwiftInitializerGenerator (или любой другой) эту вещь для создания публичных инициализаторов. Так будет меньше работы. Попробовал и все работает. Xcode Version 10.0, High Sierra 10.13.6
источник
Теперь у нас есть рубиновый гем 💎 для построчного анализа полного файла модели данных swift и добавления модификаторов общедоступного доступа, общедоступных инициализаторов по умолчанию для членов и других вещей в отдельный автоматически генерируемый выходной файл swift.
Этот драгоценный камень называется swift_republic
Пожалуйста, ознакомьтесь со следующей документацией для запуска этого драгоценного камня:
https://github.com/mehul90/swift_republic
источник
swift_republic
и работает нормально.