根据The Swift Programming Language Book ...
结构类型的成员级初始化程序 如果结构类型未定义任何自己的自定义初始化程序,则它们会自动收到一个成员初始化程序。与默认初始化程序不同,该结构即使存储了没有默认值的属性,也会接收成员初始化程序。
但是,如果我依靠自动成员初始化器进行编译,则会收到“未初始化初始化所有存储属性的初始化返回”错误。
更令人沮丧的是,有时如果我清理将要编译的build文件夹,那么稍后进行一些编译时,错误将再次出现。我正在使用XCode版本11.4 beta(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提交了反馈,但希望Stack Overflow可以提供更快的反馈。