![](/img/trans.png)
[英]Firebase iOS - Snapshot suddenly returning null when I know a value exists
[英]Snapshot that exists returning null
遇到同樣問題的問題-拉取Firebase數據以填充用戶個人資料。
我已打印到日志中,以查看快照是否正在提取信息,確實如此,但它也表示並且沒有從Firebase數據庫中提取任何信息。
Code :
import UIKit
import Firebase
import SDWebImage
class UserViewController: UIViewController {
@IBOutlet weak var userImage: UIImageView!
@IBOutlet weak var userName: UILabel!
var databaseRef: FIRDatabaseReference!
var storageRef: FIRStorageReference!
override func viewDidLoad() {
super.viewDidLoad()
databaseRef = FIRDatabase.database().reference()
storageRef = FIRStorage.storage().reference()
loadProfileData()
}
func loadProfileData(){
FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot)
if snapshot.exists(){
let values = snapshot.value as! NSDictionary
if let profileImageURL = values["urlToImage"] as? String {
self.userImage.sd_setImage(with: URL(string: profileImageURL))
}
self.userName.text = values["full name"] as? String
}
})
}
日志:
2017-03-17 13:49:51.366564 avenir-design-app[14469:925571] [MC] Reading from private effective user settings.
2017-03-17 13:50:05.885290 avenir-design-app[14469:925211] [Common] _BSMachError: port 690f; (os/kern) invalid capability (0x14) "Unable to insert COPY_SEND"
2017-03-17 13:50:05.885899 avenir-design-app[14469:925211] [Common] _BSMachError: port 690f; (os/kern) invalid name (0xf) "Unable to deallocate send right"
Snap (XH1ju3X9QzfqZJFC4XP98IW4nn32) <null>
數據庫:
{
"user" : {
"XH1ju3X9QzfqZJFC4XP98IW4nn32" : {
"full name" : "Bob Jones",
"uid" : "XH1ju3X9QzfqZJFC4XP98IW4nn32",
"urlToImage" : "https://firebasestorage.googleapis.com/v0/b/avenir-design.appspot.com/o/users%2FXH1ju3X9QzfqZJFC4XP98IW4nn32.jpg?alt=media&token=4b92e6ac-6a4b-4bc8-825e-b674cc4372a4"
},
我不得不轉換為字典,然后確保我的孩子引用指向正確的孩子[我放置了用戶,但實際上是用戶]。 但是最重要的部分是鑄造字典。
這是更新的代碼:
import UIKit
import Firebase
import SDWebImage
class UserViewController: UIViewController {
@IBOutlet weak var userImage: UIImageView!
@IBOutlet weak var userName: UILabel!
var databaseRef: FIRDatabaseReference!
var storageRef: FIRStorageReference!
//let user = [User]()
override func viewDidLoad() {
super.viewDidLoad()
databaseRef = FIRDatabase.database().reference()
storageRef = FIRStorage.storage().reference()
//loadProfile()
setupProfile()
//loadProfileData()
}
func setupProfile(){
if FIRAuth.auth()?.currentUser?.uid == nil {
//logout()
} else {
let uid = FIRAuth.auth()?.currentUser?.uid
databaseRef.child("user").child(uid!).observeSingleEvent(of: .value, with: {(snapshot) in
if let dict = snapshot.value as? [String : AnyObject] {
print(dict)
self.userName.text = dict["full name"] as? String
if let profileImage = dict["urlToImage"] as? String {
let url = URL(string: profileImage)
URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
self.userImage?.image = UIImage(data: data!)
}
}).resume()
}
}
})
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.