【问题标题】:Unable to get keys from firebase database无法从 firebase 数据库中获取密钥
【发布时间】:2017-07-02 19:07:14
【问题描述】:

在我的学生程序员生涯中,我一直在思考最长的时间。我想知道

我使用 autoChildId 添加了密钥。

  1. 如何从 firebase 数据库 swift 2 中获取密钥?我知道如何使用 .getKeys() 从 Android 获取

  2. 我最好的朋友 Google 教我使用 allKeys。然而,我的友谊现在正处于绝望的边缘,因为我收到以下消息,我们与 .allKeys 的关系将永远失败(见下图)。海什...

  1. 我需要这个才能将 Firebase 数据库中的数据显示到我的 tableview 中,因为我相信这是一个空表的问题,就像我对我的项目的心意一样。没心没肺。

这是我的 firebase 数据库的样子:

这是我的代码:

func findPlaceToEat(){
    print("inside findPlaceToEat()")

    print("Plan price level")
    print(planPriceLevel)
    print("End of price level")

    ref = FIRDatabase.database().reference()

    ref.child("places_detail").child("price_level").child(planPriceLevel).observeEventType(.ChildAdded, withBlock:{
        (snapshot) in

        if let dictionary = snapshot.value?.allKeys! as? [String: AnyObject]{
            let PlaceObj = placeObj(place_name: dictionary["place_name"] as! String, place_type: dictionary["place_type"] as! String, price_range: dictionary["price_range"] as! String, vegan_type:dictionary["vegan_type"] as! String , website: dictionary["website"] as! String)
            print("Whatever")

            print(PlaceObj);
            //self.tableView.reloadData()

        }
        }, withCancelBlock: nil)
}

【问题讨论】:

    标签: ios firebase swift2 firebase-realtime-database


    【解决方案1】:

    从快照中获取密钥

    snapshot.key
    

    【讨论】:

    • 对不起,这对我的案子不起作用。谢谢你的帮助。 :)
    • 它应该可以工作我自己检查过。您可能根本没有得到任何数据。尝试检查 snapshot.exists()
    • 嘿伙计,你有什么可以分享给我的参考吗?多谢。 @rv7284
    • @charlinagnes snapshot.key 在您的完成块中应该具有值 -K...(请参阅 reference docs)。如果它不起作用,请显示您尝试过的代码以及它做了什么
    • @FrankvanPuffelen 再次感谢您的帮助,先生。根据我的情况,我得到了 swift 2 版本的答案。我已经发布了我的答案。
    【解决方案2】:

    我的项目有一个解决方法,请大家祈祷我的讲师没有看到这个。 :

    我所做的是在保存按钮中从数据库中检索值,然后将其保存回 Firebase 数据库。

    ref = FIRDatabase.database().reference()
    
    
        ref.child("hello").child("google! I need a part time job").child(planPriceLevel).observeEventType(FIRDataEventType.ChildAdded, withBlock:{
            (snapshot: FIRDataSnapshot) in
    
            if let dictionary = snapshot.value as? [String: AnyObject]{
                let getPlaceObj = placeObj()
    
                getPlaceObj.setValuesForKeysWithDictionary(dictionary)
                self.PlaceObj.append(getPlaceObj)
    
    
                print("Name " ,getPlaceObj.place_name)
    
    
            }
    
            let place_name = snapshot.value?.objectForKey("place_name") as! String
            let place_type = snapshot.value?.objectForKey("place_type") as! String
            let price_range = snapshot.value?.objectForKey("price_range") as! String
            let vegan_type = snapshot.value?.objectForKey("vegan_type") as! String
            let website = snapshot.value?.objectForKey("website") as! String
    
            print(place_name, place_type, price_range, vegan_type, website)
    
            let savePlan : [String: AnyObject] = ["place_name":place_name, "place_type":place_type, "price_range":price_range, "vegan_type":vegan_type, "website":website]
    
            self.ref.child("can you place hire me as your intern? I am from Singapore!!!").child(self.user!.uid).childByAutoId().setValue(savePlan)
    
    
            }, withCancelBlock: nil)
    

    【讨论】:

      【解决方案3】:

      您需要像下面这样定义查询 orderbykey:

        this.afd.list('/yourItems/', {query:{orderByKey :true}}).subscribe((elements) => {
      
                  elements.map(element=>{
                    console.log(element.$key);
      
                  })
      
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-30
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 2021-04-28
        相关资源
        最近更新 更多