【发布时间】:2018-12-12 04:24:08
【问题描述】:
我正在尝试从 Firebase 读取用户数据,但用户名变量始终为零。
let storage = Storage.storage()
let storageRef = storage.reference()
let userID = Auth.auth().currentUser?.uid
let canvasName = NSUUID().uuidString
var username: String? = nil
//get username
self.ref.child("Users").observeSingleEvent(of: .value, with: { (snapshot) in
let usersProfile = snapshot.value as? NSDictionary
let userProfile = usersProfile![userID!] as? NSDictionary
username = userProfile!["Username"] as? String
}) { (error) in
print(error.localizedDescription)
}
//create new canvas
let canvasValue:[String:Any] = ["UserID":userID!,
"Username": username!,//always nil
"TimeCreated": NSDate().timeIntervalSince1970,
]
let canvasAutoID = self.ref.child("Users").child(userID!).child("Canvas").childByAutoId().key
self.ref.child("Canvas").child(canvasAutoID!).setValue(canvasValue)
这是 firebase 数据库的图片。
【问题讨论】:
-
看起来您正在访问块外的
username;这是一个异步操作。当然是 nil,到达那条线的时候还没有设置。
标签: ios swift firebase firebase-realtime-database