【问题标题】:Set Value with current User Email使用当前用户电子邮件设置值
【发布时间】:2019-06-11 20:24:50
【问题描述】:

我想将当前用户电子邮件作为子级保存数据,但是当我启动我的项目时,应用程序崩溃并显示以下错误消息:terminating with uncaught exception of type NSException

let email = Auth.auth().currentUser?.email
let SavedProduct : [String: Any] = ["email": email, "ImageURL": FImage1[picturenumber]]
Database.database().reference().child("SavedWoman").child(email!).setValue(SavedProduct)

【问题讨论】:

  • 你应该发布整个错误信息。
  • 这是完整的错误信息!
  • 看起来像 email == nil 而你强制拆开它?你为什么不使用 if let email = auth....email {}
  • 请。不要使用电子邮件地址作为节点密钥。您必须对它们进行编码和解码,因为键不能包含句点(和其他一些字符)。更重要的是电子邮件地址发生变化,如果发生这种情况,整个数据库中引用该节点的每个地方都必须用新电子邮件读入、删除和写回。您最好使用 .childByAutoId 创建密钥并将电子邮件地址保留为子节点。

标签: swift firebase firebase-realtime-database


【解决方案1】:

您不能将电子邮件地址用作 Firebase 数据库节点的键,因为这些键不能包含句点,而每个电子邮件地址至少包含其中一个。

常见的解决方案是以某种方式对电子邮件地址进行编码。最简单的编码是将. 替换为,,这在Firebase 密钥中是允许的,并且不能方便地出现在电子邮件地址中。

所以jan2409@someaddress.com 会变成jan2409@someaddress,com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2013-11-07
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多