2016-10-04 117 views
1

這是我的JSON嵌套DB的樣子:檢索火力地堡數據庫的值,嵌套數據

enter image description here

它是一種pets根具有多個唯一的ID。然後每個ID代表一個有一些屬性的寵物,其中一些(如feedingListwalkingList)也包含更多代表進餐/散步的值以及它們的時間和完成布爾值。

我已經在Swift中編寫代碼來檢索一些值,但我遇到問題達到那些fListwList

func getPetInfo() { 

     let refMeals = reff.child("pets") 
     refMeals.observe(.value, with: { (snapshot) in 

      if let snapCast = snapshot.value as? [String:AnyObject]{ 
       for snap in snapCast{ 
        if self.currentUser.pets.contains(snap.key) { 
         if let x = snap.value["name"] as? String{ 
          self.tempPet.name = x 
          print(x) 

         } 
         if let y = snap.value["type"] as? String{ 
          //self.tempPet.type = y 
          print(y) 

         } 
         if let z = snap.value["age"] as? Int{ 
          //self.tempPet.age = z 
          print(z) 
         } 
         print(snap.value["fList"]) 
         if let w = snap.value["fList"] as? [String:AnyObject]{ 
          for snippete in w { 
           if let a = snippete.value["time"] as? String{ 
            //self.tempPet.feedingList.append(a) 
            print(a) 
           } 
           if let b = snippete.value["doneForToday"] as? Bool{ 
            //self.isItDoneForToday.append(b) 
            print(b) 
           } 
          } 
         } 
         if let r = snap.value["wlist"] as? [String:AnyObject]{ 
          for snippete in r { 
           if let c = snippete.value["time"] as? String{ 
            //self.tempPet.feedingList.append(a) 
            print(c) 
           } 
           if let d = snippete.value["doneForToday"] as? Bool{ 
            //self.isItDoneForToday.append(b) 
            print(d) 
           } 
          } 
         } 
         //self.petArray.append(self.tempPet) 
        } 
       } 
      } 
     }) { (error) in 
      print(error.localizedDescription) 
     } 
    } 

這一切都打印出來好了nameagetype,但是當涉及到這行代碼:

if let w = snap.value["fList"] as? [String:AnyObject] 
... 

它不讓它並沒有什麼打印出來。你能告訴我我錯了嗎?我顯然無法理解這個JSON樹的值和數組。當我試圖理解什麼是get並轉換爲什麼時,這是一團糟。提前致謝。

這就是被打印出來:

blasted 
cat 
3 
Optional(<__NSArrayM 0x60800024f000>(
{ 
    doneForToday = 0; 
    time = "12:00"; 
} 
) 
) 
+0

看來FLIST和wList是數組不是字典! – iShaalan

+0

你是什麼意思?我的意思是「寵物」(在我的數據庫中的第一張圖片上)以 [字符串是ID:具有更多內容的AnyObject], 作爲字典呈現,我希望那些fList元素表示爲 [字符串是數字:有更多東西的AnyObject] – NikolaM

回答

1

試試這個: -

if let r = snap.value["wlist"] as? [Int:AnyObject]{ 
         for snippete in r { 
          if let c = snippete.value["time"] as? String{ 
           //self.tempPet.feedingList.append(a) 
           print(c) 
          } 
          if let d = snippete.value["doneForToday"] as? Bool{ 
           //self.isItDoneForToday.append(b) 
           print(d) 
          } 
         } 
        } 
        //self.petArray.append(self.tempPet) 
       } 
+0

不,它不能解決問題。我已經將那些「0」和「1」的值設置爲一個字符串,所以它不是一個Int。 – NikolaM

+0

@ frank-van-puffelen你能幫我解決嗎? – NikolaM

+0

你能想到任何其他原因,爲什麼這不起作用。我堅持這一點,不知道如何繼續 – NikolaM