Ошибка компилятора Swift Struct «Возврат из инициализатора без инициализации всех сохраненных свойств» - PullRequest
0 голосов
/ 06 апреля 2020

Согласно Книге языков программирования 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, но надеюсь, что переполнение стека может обеспечить более быструю обратную связь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...