【问题标题】:Can't initialize class with "if"无法用“if”初始化类
【发布时间】:2019-08-16 01:14:19
【问题描述】:

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

}

条件语句应该如何处理?

【问题讨论】:

    标签: swift initialization


    【解决方案1】:

    init 中,您必须初始化所有属性。在您的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,如果 init? 成功,则返回一个包装值。

    有关详细信息,请参阅Swift Language Guide 中的 Failable Initializers 部分。

    【讨论】:

    • 谢谢!已经修复了
    猜你喜欢
    • 2021-11-03
    • 2012-08-01
    • 2012-10-10
    • 2015-11-23
    • 2011-09-28
    • 2014-10-22
    • 2021-02-14
    • 2017-09-30
    • 2016-11-09
    相关资源
    最近更新 更多