簡體   English   中英

無法使用 tornadofx 視圖模型綁定可為空的屬性

[英]Cannot bind a nullable property with tornadofx viewmodel

我正在嘗試將域模型中的可為空屬性(字符串?)綁定到 tornadofx 視圖模型。 但是我收到編譯器錯誤。 可為空的屬性有:idCard、phone 和放電

我的代碼:

class Patient(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<Patient>(Patients)
    var patientId: Int by Patients.patientId
    var name: String by Patients.name
    var lastName: String by Patients.lastName
    var recordNumber: Int by Patients.recordNumber
    var idCard: String? by Patients.idCard
    var phone: String? by Patients.phone
    var age: Int by Patients.age
    var gender: Char by Patients.gender
    var admission: DateTime by Patients.admission
    var discharge: DateTime? by Patients.discharge
    var specialty: String by Patients.specialty
}
class PatientViewModel(patient: Patient) : ViewModel() {
    val patientId = bind { patient.observable(Patient::patientId) }
    val name = bind { patient.observable(Patient::name)}
    val lastName = bind { patient.observable(Patient::lastName) }
    val recordNumber = bind { patient.observable(Patient::recordNumber) }
    val idCard = bind { patient.observable(Patient::idCard) }
    val phone = bind { patient.observable(Patient::phone)}
    val age = bind { patient.observable(Patient::age) }
    val gender = bind { patient.observable(Patient::gender) }
    val admission = bind { patient.observable(Patient::admission) }
    val discharge = bind { patient.observable(Patient::discharge) }
    val specialty = bind { patient.observable(Patient::specialty) }
}

編譯器錯誤:

e: D:\projects\manager\src\main\kotlin\manager\model\Patient.kt: (49, 18): Type inference failed: Cannot infer type parameter T in inline fun <reified PropertyType : Property<T>, reified T : Any, ResultType : PropertyType> bind(autocommit: Boolean = ..., forceObjectProperty: Boolean = ..., defaultValue: T? = ..., noinline propertyProducer: () -> PropertyType?): ResultType
None of the following substitutions
(Boolean,Boolean,String?,() -> Property<String?>?)
(Boolean,Boolean,Any?,() -> Property<String?>?)
can be applied to
(() -> ObjectProperty<String?>)

嘗試使用您的模型綁定執行此操作:

val patientId = bind(Patient::patientId)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM