2016-09-21 81 views
0

我目前正試圖從Swift中的子快照訪問數據。這裏是我的代碼,我有(其中斯威夫特3 /火力地堡更新之前曾):Swift Firebase訪問子快照數據

if let achievements = snapshot1.childSnapshotForPath("Achievements").children.allObjects as? [FIRDataSnapshot] { 


        if achievements.count != 0 { 

         if let val = achievements[0].value!["somevalue"] as? Int { 
          self.dict["somevalue"] = val 
         } 


        } 

因此,我想在這裏做的,是創建一個子快照(成就)的變量,並獲得子級快照數據。成就[0]將簡單地返回第一個值。但是,這似乎並不奏效。我應該如何處理這個問題?

我目前做這個快照裏面已經(的 'observeType:.ChildAdded')

我的火力地堡DB是這樣的:

Achievements{ 

randomId1 { 
somevalue : somevalue 
} 

randomId2 { 
somevalue2 : somevalue2 
} 
} 

更新代碼:

func loadData() { 

     ref.child("Players").observe(FIRDataEventType.childAdded) { (snapshot:FIRDataSnapshot) in 

      if let value = snapshot.value as? [String:AnyObject], let username = value["Username"] as? String { 

      } 

      if let value = snapshot.value as? [String:AnyObject], let ranking = value["Rank"] as? String { 

      } 

      if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements").children.allObjects as? [FIRDataSnapshot] { 

       if childSnapshot.count != 0 { 

        if let achievement1 = childSnapshot[0].value!["Rookie"] as? String { 
         print(achievement1) 
        } 

       } 
      } 

     } 

    } 

JSON樹:

Players { 

PlayerID { 

Username 

Rank 

Achievements { 

Rookie: yes 

} 


} 
+0

給你的全部功能。而你的實際JSON樹,很難從你給出的東西中破譯。 – Dravidian

+0

我現在已經爲您提供了完整的代碼和JSON樹。我似乎無法找到一種方法來抓取childsnapshot數據,上面的代碼返回錯誤。我也試圖將其定義爲[String:AnyObject] - 但這隻會導致一個零。 – askaale

+0

而且很清楚,我只是想從'新秀'價值中返回'是'。 – askaale

回答

2

請嘗試: -

if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements") as? FIRDataSnapshot{ 

       if let achievementDictionary = childSnapshot.value as? [String:AnyObject] , achievementDictionary.count > 0{ 

        if let achieveMedal = achievementDictionary["Rookie"] as? String { 

         print(achieveMedal) 

      }   
     } 
    } 
+0

這也是我嘗試過的東西,它給我留下如下的錯誤信息:輸入'Any'沒有下標成員。 – askaale

+0

嘗試將'[FIRDataSnapshot]'替換爲'[String:AnyObject]' – Dravidian

+0

錯誤:'模糊引用成員'下標'。 – askaale

相關問題