【发布时间】:2019-07-15 19:14:33
【问题描述】:
您好,我想知道如何读取当前登录用户的数据以及如何检索数据。 updateName 函数的第一个代码在另一个 viewController 中。函数 updateName 在另一个 ViewController 中。 我将数据放在“用户”下,然后在 Firebase RealTimeDatabse 中有两个名为 Firstname = SomeData、LastName = SomeData 的键值对,如何访问当前登录用户的唯一数据。 我更新了代码以给予信用是所谓的坦率, 问题是它不会将数据读入其中并给出空值,我知道为什么,因为由于用户正在创建用户帐户,因此 uid 为空。 那么当用户创建帐户时如何保存用户名并为其配置文件回调 你能帮我么 提前感谢您的帮助
let nameDB = Database.database().reference().child("User")
let nameDictionary = ["FirstName" : fullName.text!, "LastName" : lastName.text!]
let uid = Auth.auth().currentUser?.uid
Auth.auth().createUser(withEmail: email.text!, password: password1) { (userInformation, someKindOfError) in
if someKindOfError != nil {
print(someKindOfError!)
} else {
//success
nameDB.child(uid!).setValue(nameDictionary) {
//error
(error, reference) in
if error != nil{
print(error!)
} else {
print("Name saved Sucessful")
}
}
print("Registration successful!!")
}
}
//Different viewController
func updateName() {
let userID = Auth.auth().currentUser?.uid
let fullName = Database.database().reference().child("User").child(userID!)
fullName.observeSingleEvent(of: .value) { (snapShot) in
print("Enter snapShot")
if let snapShotValue = snapShot.value as? [String : String]{
print("Entering to grab the data")
let first = snapShotValue["FirstName"] //as? String
let last = snapShotValue["LastName"] //as? String
print(first, last)
self.fullName.text = "\(first) \(last)"
}
}
数据结构:
{
"User" : {
"fTKigbhqdVfis9SFk7ofsq1k9Gw1" : {
"FirstName" : "Alfred",
"LastName" : "case"
}
}
}
【问题讨论】:
-
代码乍一看还不错。有什么不好的?具体来说:哪条线路没有按照您的预期执行?另请注意,如果您的问题包含您正在阅读的 JSON(作为文本,请不要截图),这将很有用。您可以通过单击 Firebase Database console 的溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
-
它说 snapShotValue = snapShot.value as...整个事情并没有按照我是 firebase 的新手的方式执行,我想获取当前用户的名字和姓氏
-
你是如何确定它不执行的?请注意,数据是异步加载的,因此您无法使用调试器单步执行该回调。而是在
if let snapShotValue行上设置断点以查看它是否被命中,或者在其前面放置一个print -
我做了,没有打印出来,如果我取出 .child(userID!) 然后打印 nil nil
-
请将您的信息直接添加到您的问题中。我现在为你做了,但它下面有一个编辑链接,你以后可以点击。下一步:不要伪造任何数据,但要准确显示您当前拥有的无效数据。
"numbersHereGeneratedbyFirebaseJustPlacedWordForIt"并不是真正存在的,这让我们很难确定您是否正确应用了我的答案中的更改。不要担心共享推送 ID 的 UID,因为它们都不是安全凭证。它们只是用于共享的标识符。
标签: ios swift firebase firebase-realtime-database firebase-authentication