我正在尝试使用if
条件初始化一个类,但是出现以下错误“从初始化返回而不初始化所有存储的属性”
我正在开发一个SwiftUI项目。
class StationCombined: Identifiable, ObservableObject {
let information: BixiStationInformationViewModel
let data: BixiStationDataViewModel
init(data: BixiStationDataViewModel, information: BixiStationInformationViewModel ) {
if data.station_id == information.station_id {
self.data = data
self.information = information
}
}
// Error: Return from initializer without initializing all stored properties
...
}
class StationCombinedListViewModel: ObservableObject {
@Published var stationsCombined = [BixiStationDataViewModel]()
}
我应该如何处理条件语句?
答案 0 :(得分:2)
在init
中,您必须 初始化 all 属性。在您的init
中,只有在if
成功的情况下,才会初始化您的属性。
似乎您需要失败 init
:
init?(data: BixiStationDataViewModel, information: BixiStationInformationViewModel) {
guard data.station_id == information.station_id else { return nil }
self.data = data
self.information = information
...
}
失败的初始值设定项返回一个可选值,如果无法创建该对象,则为nil
;如果返回{{1} }成功。
有关更多信息,请参见Swift Language Guide中的初始化失败器部分。