簡體   English   中英

Swift只能從firebase中看到一個值(檢索數據)

[英]Swift can only see one value from firebase (retrieving data)

編譯圖片

我只能看到我的應用程序上的用戶名而不是年齡,但我可以看到編譯器中的兩個值都不確定問題是什么。

func fetchDataa(){
    // var ref: DatabaseReference!

    //  ref = Database.database().reference()
    guard  let currentUid = Auth.auth().currentUser?.uid else {return}
    Database.database().reference().child("users").child(currentUid).observeSingleEvent(of: .value, with: { (snapshot) in
        guard let dictionary = snapshot.value as? Dictionary<String , AnyObject> else {return}
        let uid = snapshot.key
        let user = User(uid:uid , dictionary: dictionary)

        print(Thread.current)
        print(Thread.main)

        self.userAgeLabel.text = user.userage
        self.user = user
               self.userAgeLabel.text = user.userage
               self.user = user

        print(snapshot.value)
        // Get user value
        //  let value = snapshot.value as? NSDictionary

        print(dictionary)


        // ...
    }) { (error) in
        print(error.localizedDescription)

    }

//通過這種方式我將信息存儲為字典//用戶信息存儲

  let userID = Auth.auth().currentUser?.uid
        let userData = ["userName": userName,
            "userAge ": userAge] as [String? : Any]


        let ref = Database.database().reference()
        ref.child("users/\(userID ?? "")").setValue(userData)

      // ref.child("users").setValue(values)

}

//用戶初始化類

class User {

var username:String!
var userage:String!
var uid:String!

init(uid:String,dictionary:Dictionary){

self.uid = uid

if let username = dictionary [ "userName" ] as? String{

    self.username = username
}

if let userage = dictionary [ "userAge" ] as? String{
    self.userage = userage
}
}
}
}

Firebase結構:

這里

你能試試嗎?

        Database.database().reference().child("users").child(currentUid).observeEvent(of: .value, with: { (snapshot) in
 if let dictionary = snapshot.value as? [String: Anyobject] {
 let userAgeDictionary = dictionary["age"] as? String
print(userAgeDictionary)

這打印出年齡嗎?

你以某種方式將多余的"圍繞userAge財產。所以關鍵是"userAge" 包括雙引號。

要從字典中獲取該值:

if let userage = dictionary [ "\"userAge\"" ] as? String{
    self.userage = userage
}

但是,您可能希望在實際數據中修復問題:在Firebase控制台中輸入密鑰時,您無需在其周圍輸入引號,因為密鑰始終是字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM