我有一个包含SwiftyJson数据的数组,我已经声明并填充了这个数据。用来填充hoge数组的代码如下:self.hoge = JSON(data: data!)
但是我需要将新的SwiftyJSON数据添加到这个hoge数组中。我注意到hoge数组没有append属性。我该如何做呢?
谢谢。
我有一个包含SwiftyJson数据的数组,我已经声明并填充了这个数据。用来填充hoge数组的代码如下:self.hoge = JSON(data: data!)
但是我需要将新的SwiftyJSON数据添加到这个hoge数组中。我注意到hoge数组没有append属性。我该如何做呢?
谢谢。
SwiftyJSON 没有 append
或 extend
功能。
你可以:
self.hoge = JSON(self.hoge.arrayObject! + JSON(data: newData).arrayObject!)
但是我建议将self.hoge
声明为[JSON]
var hoge:[JSON] = []
func readMoreData() {
let newData: NSData = ...
if let newArray = JSON(data:newData).array {
self.hoge += newArray
}
}
self.hoge[indexPath.row]["cars"]["pic_name"]
,但现在我收到错误消息说无法索引空缓冲区。现在我该如何返回数据?再次感谢 - user970956使用扩展 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(key:"A", json: JSON(["key1":"value1"]))
myJSON["myDictionary"].appendIfDictionary(key: "B", json: JSON(["key2":"value2"]))
myJSON["myArray"].appendIfArray(json: JSON(5))
打印:
{
"myArray" : [
1,
2,
3,
4,
5
],
"myDictionary" : {
"B" : {
"key2" : "value2"
},
"A" : {
"key1" : "value1"
}
}
}
merge
函数来实现此功能。
https://github.com/SwiftyJSON/SwiftyJSON#merging
var array: JSON = [1, 2, 3]
array = try! array.merged(with: [4])
// -> [1, 2, 3, 4]
let jsonNewJSON:JSON = JSON(newData)
var arr:[JSON]=jsonOBJ.arrayValue
arr.append(jsonNewJSON)
var combinedOBJ = JSON(arr)
将主要的 JSON 数组声明为:
var data:[JSON] = []
func setData(){
data = []
if let items = sourceData.array {
for item in items {
data.append(item)
}
}
collectionView.reloadData()
}
我需要在我的项目中向JSON数据添加一个字典。我已经添加到Daniel Krom的答案上面:
import SwiftyJSON
extension JSON {
mutating func appendIfKeyValuePair(key: String, value: Any){
if var dict = self.dictionaryObject {
dict[key] = value
self = JSON(dict)
}
}
}
使用方法:
var data: JSON = []
data.appendIfKeyValuePair(key: "myKey", value: "myValue")
self.hoge
应该是一个 Swift 数组(如果声明为 var 则可变)或转换为 NSMutableArray。如果它是 Array 类型,请使用 append。如果转换为 NSMutableArray,请使用 self.hoge.addObject(yourObject)
。
hoge = [JSON]()
. - Nikos M.
var hoge:JSON = []
,但是当我将它的类型更改为NSMutableArray时,我收到了一个错误,说JSON不能转换为NSMutableArray。我做错了什么吗?谢谢。 - user970956