如何将新数据追加到现有的JSON数组(swiftyJSON)
我有一个SwiftyJson数据的数组,我已经声明并填充了数据。我用来填充hoge数组的代码是这样的: self.hoge = JSON(data: data!)
但我需要追加新的swiftyJSON数据到这个hoge数组中。我注意到hoge数组没有append属性。 我该怎么做?
谢谢
SwiftyJSON没有append
或extend
function。
您可以:
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,它完成了工作。
您可以使用merge
function。 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)
。