我有一个 SwiftyJson 数据数组,我已经声明并用数据填充了它。我用来填充 hoge 数组的代码是这样的:self.hoge = JSON(data: data!)
但我需要将新的 swiftyJSON 数据附加到这个 hoge 数组。我注意到 hoge 数组没有附加属性。我该怎么做?
谢谢
我有一个 SwiftyJson 数据数组,我已经声明并用数据填充了它。我用来填充 hoge 数组的代码是这样的:self.hoge = JSON(data: data!)
但我需要将新的 swiftyJSON 数据附加到这个 hoge 数组。我注意到 hoge 数组没有附加属性。我该怎么做?
谢谢
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
}
}
另一种解决方案,使用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)
我使用上面的代码附加到一个 swiftyjson 数组。我首先将新数据转换为 JSON 对象。然后我得到了现有 JSON 的数组并附加了新的 JSON。我将数组转换回 JSON 对象。可以承认,代码不是很好,但我在这里不需要性能,它完成了工作。
将您的主要 JSON 数组声明为:
var data:[JSON] = []
如果数据源是任何其他对象(如领域),则使用 for 循环对其进行循环但如果数据源是另一个 JSON 数组,则执行:
func setData(){
data = []
if let items = sourceData.array {
for item in items {
data.append(item)
}
}
collectionView.reloadData()
}
self.hoge
应该是一个 Swift 数组(如果声明为 var,则它是可变的)或强制转换为 NSMutableArray。如果它是 Array 类型,请使用 append。如果强制转换为 NSMutableArray 使用self.hoge.addObject(yourObject)
.
我需要在项目中的 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")