Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 是否可以在firebase数据库和存储中保存相同的autoID?_Swift_Firebase_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Swift 是否可以在firebase数据库和存储中保存相同的autoID?

Swift 是否可以在firebase数据库和存储中保存相同的autoID?,swift,firebase,firebase-realtime-database,firebase-storage,Swift,Firebase,Firebase Realtime Database,Firebase Storage,我试图组织我的数据库和存储。我想使用它为数据库中的用户生成的自动ID,以用于我的存储。可能吗 这是我用来保存个人资料照片的代码 let email = Auth.auth().currentUser?.email else { return } let storageRef = Storage.storage().reference().child(email+"/ProfilePhoto/\("Profile Photo")") 而不是使用电子邮件。我希望使用数据库中的用户autoID

我试图组织我的数据库和存储。我想使用它为数据库中的用户生成的自动ID,以用于我的存储。可能吗

这是我用来保存个人资料照片的代码

 let email = Auth.auth().currentUser?.email else { return }

 let storageRef = Storage.storage().reference().child(email+"/ProfilePhoto/\("Profile Photo")")
而不是使用电子邮件。我希望使用数据库中的用户autoID


在云存储和实时数据库(以及云存储)中存储每个用户信息的最合适方式是登录用户的唯一ID(UID)


实时数据库生成的自动id不会唯一标识用户。每次都会返回一个随机值。

要获取当前用户的UID:

let uid = Auth.auth().current?.uid
print(uid!)

您确定不想在Firebase身份验证中使用用户的唯一ID吗?存储每个用户的数据通常更有意义。如何在Firebase身份验证中获取用于数据库中用户ID的ID?这是用于将用户保存到数据库中的内容。数据库().reference().child(“用户”).childByAutoId().setValue(用户字典)以及如何在Firebase存储中使用相同的ID请不要将电子邮件用作节点密钥或路径。它将包含不能用作密钥的字符,然后您必须对其进行解析并生成一堆额外的代码。只需将用户uid用作密钥,并将其数据存储在存储器中的路径即可。所以它看起来像/storage/uid/ProfilePhoto,其中uid是
currentUser.uid
它工作了。但是为什么Firebase数据库中的用户中有一个“可选”字呢?这是因为Doug使用
来查找用户。我看它起作用了。但为什么Firebase数据库中的用户中有“可选”一词呢?请参见上图,因为您已在数据库中保存了可选字符串。您必须使用!使其不是可选的!。例如:var str:String?str=“Hello”print(str)//可选(“Hello”)var str:String!str=“Hello”print(str)/“Hello”@Nick这不是因为您在数据库中保存了可选字符串。此外,Auth.Auth()没有
current
var,它是
.currentUser
。它是可选的,因为如果没有当前用户,
currentUser
var可以是
nil
,所以它是可选的,并且它的属性可以是nil。你永远不应该用一只手强行打开它!在生产应用程序中,因为它可能导致应用程序崩溃。当一个var可以为nil时,Swift使用一个可选属性——它与Firebase或存储数据无关。
let uid = Auth.auth().current?.uid
print(uid!)