提问者:小点点

类初始化的问题


我认为这是一个简单的问题,但却令人挠头。 我得到一个“。。。。has no initializers”错误,而实际上有初始化器。 请参见代码。。。

数据结构

class PatientData: Identifiable, ObservableObject
{
    let id = UUID()
    
    @Published var patientName: String = "Name"
    @Published var patientAge: String = "Age"
    @Published var patientDOB: String = "DOB"
    @Published var patientPhone: String = "Phone"

init(patientName: String, patientAge: String, patientDOB: String, patientPhone: String)
}

内容视图

struct ContentView: View
{
    @ObservedObject var patient = PatientData() // "PatientData has no accessible initializers"
.
.
.

    

共1个答案

匿名用户

注意:

PatientData()

等价于:

PatientData.init()

这意味着如果您想以这种方式创建患者数据:

@ObservedObject var patient = PatientData()

您需要提供匹配的init方法(它可以为空,因为您的所有@published属性都已有默认值):

init() { }

此外,初始值设定项需要一个主体。 不能只声明一个init方法:

init(patientName: String, patientAge: String, patientDOB: String, patientPhone: String)

您还需要添加一个主体:

init(patientName: String, patientAge: String, patientDOB: String, patientPhone: String) {
    // here you assign parameters etc. 
}