Swift 使用当前用户电子邮件设置值

Swift 使用当前用户电子邮件设置值,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,我想将当前用户电子邮件中的数据保存为子项,但当我启动项目时,应用程序会崩溃,并显示以下错误消息:终止时出现类型为NSException的未捕获异常 let email = Auth.auth().currentUser?.email let SavedProduct : [String: Any] = ["email": email, "ImageURL": FImage1[picturenumber]] Database.database().reference().child("SavedW

我想将当前用户电子邮件中的数据保存为子项,但当我启动项目时,应用程序会崩溃,并显示以下错误消息:终止时出现类型为
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)

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

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


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

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