无法使用“如果”初始化类

时间:2019-08-16 01:14:19

标签: swift initialization

我正在尝试使用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]()

}

我应该如何处理条件语句?

1 个答案:

答案 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中的初始化失败器部分。