如何将新数据追加到现有的JSON数组(swiftyJSON)

我有一个SwiftyJson数据的数组,我已经声明并填充了数据。我用来填充hoge数组的代码是这样的: self.hoge = JSON(data: data!)

但我需要追加新的swiftyJSON数据到这个hoge数组中。我注意到hoge数组没有append属性。 我该怎么做?

谢谢

SwiftyJSON没有appendextendfunction。

您可以:

 self.hoge = JSON(self.hoge.arrayObject! + JSON(data: newData).arrayObject!) 

但我build议宣布self.hoge[JSON]

 var hoge:[JSON] = [] func readMoreData() { let newData: NSData = ... if let newArray = JSON(data:newData).array { self.hoge += newArray } } 

另一种解决scheme,使用Extension

 extension JSON{ mutating func appendIfArray(json:JSON){ if var arr = self.array{ arr.append(json) self = JSON(arr); } } mutating func appendIfDictionary(key:String,json:JSON){ if var dict = self.dictionary{ dict[key] = json; self = JSON(dict); } } } 

使用:

  var myJSON: JSON = [ "myDictionary": [String:AnyObject](), "myArray" : [1,2,3,4] ] myJSON["myDictionary"].appendIfDictionary("A", json: JSON(["key1":"value1"])) myJSON["myDictionary"].appendIfDictionary("B", json: JSON(["key2":"value2"])) myJSON["myArray"].appendIfArray(JSON(5)) print(myJSON) 

打印:

 { "myArray" : [ 1, 2, 3, 4, 5 ], "myDictionary" : { "B" : { "key2" : "value2" }, "A" : { "key1" : "value1" } } } 
 let jsonNewJSON:JSON = JSON(newData) var arr:[JSON]=jsonOBJ.arrayValue arr.append(jsonNewJSON) var combinedOBJ = JSON(arr) 

我用上面的代码附加到一个swiftyjson数组。 我首先将新数据转换为JSON对象。 然后我得到了现有的JSON数组,并追加新的JSON。 我把数组转换回JSON对象。 承认不是很好的代码,但我不需要在这里performance,它完成了工作。

您可以使用mergefunction。 https://github.com/SwiftyJSON/SwiftyJSON#merging

 var array: JSON = [1, 2, 3] array = try! array.merged(with: [4]) // -> [1, 2, 3, 4] 

self.hoge应该是一个Swift数组(如果声明为var,则是可变的)或者转换为NSMutableArray。 如果是数组types,则使用append。 如果转换为NSMutableArray,请使用self.hoge.addObject(yourObject)