找不到从字符串插值段转换的成员

Posted

技术标签:

【中文标题】找不到从字符串插值段转换的成员【英文标题】:could not find member convert from string interpolation segment 【发布时间】:2015-09-04 16:37:16 【问题描述】:

我的 firebase JSON 文件中有一个 users 类。它有以下子节点:

年龄 位置 关于 图片

我正在尝试从我的应用程序中输入登录用户的年龄并在 JSON 文件中更新它。

我写了代码:

ref.childByAppendingPath("users\(ref.authData.uid)/Age")
   .updateChildValues(AgeTextField.text)

但它给出了错误:

请帮我写哪一行代码来更新登录用户的年龄和其他信息?

【问题讨论】:

你能显示竞争用户对象的日志吗? @Shoaib,没有用户对象它是字符串的一部分。 ref.authData.uid 也应该是一个字符串。 这是运行时还是编译时? 这是一个编译时错误 【参考方案1】:

插值看起来是正确的。但是,您很可能未通过身份验证。 authData 属性仅在用户通过 Firebase 数据库身份验证时存在。

updateChildValues 函数还有另一个问题。

updateChildValues 需要 [String: AnyObject] 的字典。这是非破坏性更新。它只会更新字典中提供的值。

试试这个。

ref.childByAppendingPath("users\(ref.authData.uid)")
  .updateChildValues(["age": AgeTextField.text])

但如果您真的想深入了解Age 节点,您可以使用setValue 进行字符串更新。

ref.childByAppendingPath("users\(ref.authData.uid)/Age")
  .setValue(AgeTextField.text)

setValue 是破坏性更新。这意味着它将替换该节点位置的所有内容。但是,由于您只访问节点的单个属性,因此更新是否具有破坏性并不重要。

【讨论】:

David 还有一件事.. 现在我正在尝试在视图控制器的标签中显示此子节点信息。我应该编码什么?如何获取子节点的快照,请帮助我是 swift 和 fire base 的新手 如何在视图控制器的标签中显示子节点中存储的信息?请帮忙 我会在你单独提出的问题中回答这个问题。如果它对你有用,请解决这个问题:) 是的,请回答我这个问题谢谢:) @David East

以上是关于找不到从字符串插值段转换的成员的主要内容,如果未能解决你的问题,请参考以下文章

找不到参数映射器的隐式值

Swift方法中的Firebase“找不到成员:值”

将标准输入中的字符串分配给类成员变量

UICollectionView:ObjC Apple 示例代码到 Swift 转换(找不到成员)

从基类到派生类的静态转换后找不到成员函数

我在动态 sql 中找不到错误