首页 文章

如何将Firebase中的子项名称设置为文本字段中的用户输入?

提问于
浏览
2

以下是我希望我的数据树在Firebase中的显示方式:

用户:

--Travis:

------ travisData:

--Stephanie:

------ stephanieData:

我的问题是我似乎无法使用文本字段中的用户输入来命名孩子 .

这是我到目前为止的代码:

ref = Database.database().reference()

let username = String(emailTextField.text!)

//ref.child("users").setValue(["username": username])

ref.child("users").setValue(["\(username)": calendar])

注释掉的行创建一个名为“username”的子项,其中textfield.text作为其内容 . 但是,如何创建一个名为textfield.text的子项,其他数据作为其内容?我尝试过使用.child和.setValue的多种组合,但是当我尝试使用username变量而不是普通的字符串时,一切都让我错误 .

这是我得到的错误:
enter image description here

3 回答

  • 0

    根据您的要求,我认为此代码可以帮助您

    ref.child("users").child("\(inputUsername)").updateChildValues(["travidDataKey": userData])
    

    result image

    users:
           Travid2:
                    travidDataKey:"Travid Data"
    
  • 0

    您的问题是Firebase不接受“ . ”用户名中的符号 . 即使您输入带有“ . ”字母的字符串,您也会遇到同样的问题 . 例如“adfojnajsdnfjs.fjknasd”而不是“username” .

  • 0

    我想你正在寻找:

    ref.child("users").child(username).setValue(calendar)
    

    虽然这取决于 calendar 的值 .

    至少这应该工作:

    ref.child("users").child(username).setValue(true)
    

    并为您提供以下JSON:

    "users": {
      "Travis": true
    }
    

    要编写更复杂的结构,您可以执行以下操作:

    ref.child("users").child(username).child("name").setValue(username)
    

    结果如下:

    "users": {
      "Travis": {
        name: "Travis"
      }
    }
    

相关问题