繁体   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