将Json数据附加到数组 - Firebase / Swift

时间:2016-11-08 06:15:52

标签: json swift firebase firebase-realtime-database

我正在尝试将Firebase中的数据附加到属于NSObject的名为var itemNumbers: [[String: AnyObject]]!的变量中。这就是fetch的样子:

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

当我这样做时,app会中断我尝试将orderItems附加到数组的位置。这是我的错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

JSON:

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

在尝试追加它之前,是否需要将orderItems转换为其他内容?

感谢您的帮助!

2 个答案:

答案 0 :(得分: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]]!

答案 1 :(得分: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)