SwiftUI "un-bind" 来自文本字段的字符串

SwiftUI "un-bind" a string from a textfield

我正在尝试将文本字段中的字符串存储到 Realm DB 中。它以某种方式不只保存实际的字符串,而是从绑定中保存某种元文本:

Binding(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.StoredLocation, _value: "John Doe")

我怎样才能将输入的字符串保存到 realm 而没有它周围的信息?

这是我的代码:

@State var enteredName: String = "" let realm = try! Realm()

对于文本字段:

TextField("enter your name", text: $enteredName)
   .textFieldStyle(RoundedBorderTextFieldStyle())

对于按钮:

Button(action: {

    let newPerson = Contacts()
    newPerson.name = "\(self.$enteredName)"

    do {
        try self.realm.write {
            self.realm.add(newPerson)
        }
    } catch {
        print("Error saving newPerson \(error)")
    } 
}) {
    Text("Save New Person")   
}

Button 闭包 action 中,通过使用 $ 符号,您正在向 enteredName 发送绑定引用。你只需要一个普通的引用,你可以通过删除 $ 符号来实现。

您的代码应该是:

Button(action: {

    let newPerson = Contacts()
    newPerson.name = self.enteredName

    do {
        try self.realm.write {
            self.realm.add(newPerson)
        }
    } catch {
        print("Error saving newPerson \(error)")
    } 
}) {
    Text("Save New Person")   
}