2016-11-08 71 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