Чтобы связать объекты, ваша переменная должна соответствовать одной из новых оболочек @State
, @Binding
, @ObservableObject
, et c.
Поскольку ваш RegistrationViewModel
не соответствует View
, единственный способ сделать это - заставить ваш RegistrationViewModel
соответствовать ObservableObject
.
class RegistrationViewModel: ObservableObject {
@Published var firstname: String?
}
Как только это будет Вы можете назвать его View
, используя
@ObservedObject var resgistrationVM: RegistrationViewModel = RegistrationViewModel()
или @EnvironmentObject
https://developer.apple.com/tutorials/swiftui/handling-user-input
Кроме того, SwiftUI не поддерживает хорошо работают с опциями, но extension
может справиться с этим очень легко.
SwiftUI Дополнительный TextField
extension Optional where Wrapped == String {
var _bound: String? {
get {
return self
}
set {
self = newValue
}
}
public var bound: String {
get {
return _bound ?? ""
}
set {
_bound = newValue.isEmpty ? nil : newValue
}
}
}