2016-11-08 98 views
0

我試圖將Firebase中的數據附加到名爲var itemNumbers: [[String: AnyObject]]!的屬於NSObject的變量。這是如何獲取的樣子:當我做這個應用程式的空檔正是我嘗試添加的OrderItems到數組將Json數據附加到數組--Firebase/Swift

 let orderItems = snapDict["itemNumbers"] as! [String:String] 
     self.NSOBJECT.itemNumbers.append(orderItems as [String : AnyObject]) 
     print(orderItems) 

。這是我的錯誤:

fatal error: unexpectedly found nil while unwrapping an Optional value 

JSON:

{ "order": { 
     "itemNumbers" : { 
     "1": "Item Description", 
     "2": "Item Description" 
         } 
      } 
} 

我需要的OrderItems轉換成別的東西之前,我嘗試添加呢?

感謝您的幫助!

+0

哪裏是itemNumbers關鍵? –

+0

@cosmos你可以試着用我的回答 –

+0

試試這個。 self.NSOBJECT.itemNumbers.append(orderItems as [String:String]) –

回答

1

糾正你的json,因爲很多字段都是不正確的。

讓你變itemNumbers從

var itemNumbers: [[String:AnyObject]]!

var itemNumbers: [[String:AnyObject]] = [] //if nil instantiate 

itemsNumbers是可選的。

和追加爲

let order = jsonDictionary["order"] as! [String:AnyObject] 
let tempItemNumbers = order["itemNumbers"] as! [String:AnyObject] 
self.NSOBJECT.itemNumbers.append(tempItemNumbers) 
print(self.NSOBJECT.itemNumbers) 
+0

無法將nsdictionary的值轉換爲nsarray。另外,我通過數據庫引用訪問購物車,所以我不需要使用它訪問tempItemNumbers的權利? – cosmos

+0

現在的問題是我應該如何將它發送到firebase?讓cartVal = [「item」:「1」] [「item2」:「2」]像那樣? – cosmos

+0

我不確定如何在數據庫引用上設置值時創建此項。從來沒有做過這些,任何線索?這對我很有幫助。 – cosmos

1

提意見

好,如果你要追加order然後使用[[String: AnyObject]],另一方面追加itemNumbers[String:String]

 guard let itemNumbers= snapDict["itemNumbers"] as? [String:String] else{ 
     return 
    } 

     self.NSOBJECT.itemNumbers.append(itemNumbers) 

 guard let orderItems = snapDict["order"] as? [[String: AnyObject]] else{ 
     return 
    } 

     self.NSOBJECT.itemNumbers.append(orderItems) 

注意:避免有問題的隱式轉換[[String: AnyObject]]!

+0

立即嘗試此操作。 – cosmos

+0

我添加了'self.NSOBJECT.itemNumbers.append(orderItems!as [String:AnyObject])',這是輸出:[[「item」:1]] – cosmos

+0

這是我應該如何將數據發送到Firbase?讓ordertems = [「item」:「1」] [「item2」:「2」]以便像你的例子那樣接收它?我將它分配給key orderItems。 – cosmos