Согласно Книге языков программирования Swift ...
Инициализаторы по элементам для типов структур Типы структур автоматически получают инициализатор по элементам, если они не определяют свои собственные пользовательские инициализаторы. В отличие от инициализатора по умолчанию, структура получает инициализатор по элементам, даже если у нее есть сохраненные свойства, у которых нет значений по умолчанию.
Однако я получаю «Возврат из инициализатора без инициализации всех сохраненных свойств». "ошибка, если я пытаюсь скомпилировать, опираясь на этот автоматический c членный инициализатор.
Еще больше расстраивает, иногда, если я очищаю папку сборки, она компилируется, а через несколько сборок ошибка возвращается. Я использую бета-версию XCode версии 11.4 (11N111s).
struct OpenShoppingListPage: View {
@Binding var tabSelection: Int
@ObservedObject var storesData: StoresData
@ObservedObject var shoppingListData: ShoppingListData
var body: some View {
List {
ForEach(storesData.openShoppingLists) { eachLedger in
Button(action: {
self.shoppingListData.dataStack.currentReceipt = eachLedger
self.shoppingListData.refreshSections()
self.tabSelection = 0
}) {
HStack {
Text("\(eachLedger.dateLedger.shortDate())—\(eachLedger.myStore!.longName)")
Spacer()
Image(systemName: "chevron.right")
}
}
}
}.navigationBarTitle("Open Shopping Lists")
}
}
Я могу это исправить, введя init () вручную, как показано ниже. Тем не менее, это шаблон, который я надеялся избежать с помощью Swift Struct. Кто-нибудь еще видел эту проблему в последних сборках XCode?
init(tabSelection: Binding<Int>, storesData: StoresData, shoppingListData: ShoppingListData) {
self._tabSelection = tabSelection
self.storesData = storesData
self.shoppingListData = shoppingListData
}
Я отправил отзыв в Apple, но надеюсь, что переполнение стека может обеспечить более быструю обратную связь.