无法用 "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 中的 失败初始化程序 部分。
我正在尝试使用 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 中的 失败初始化程序 部分。