无法用 "if" 初始化 class

Can't initialize class with "if"

我正在尝试使用 if 条件初始化 class,但出现以下错误 "Return from initializer without initializing all stored properties"

我正在做一个 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]()

}

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

init 中,您 必须 初始化 所有 属性。在您的 init 中,您的属性只有在 if 成功时才被初始化。

看来你需要一个 failable init:

init?(data: BixiStationDataViewModel, information: BixiStationInformationViewModel) {
    guard data.station_id == information.station_id else { return nil }
    self.data = data
    self.information = information

    ...
}

一个可失败的初始值设定项 returns一个可选值,如果对象不能是nil如果 init? 成功,则创建或包装值。

有关详细信息,请参阅 Swift Language Guide 中的 失败初始化程序 部分。