删除SwiftyJSON数组中的字典记录

时间:2017-03-04 19:14:49

标签: ios arrays swift dictionary swifty-json

Swift 3.0 iOS 10.x SwiftyJSON

我有一个SwiftyJSON字典对象数组,看起来像这样......

[
  {
    "figure" : 1326,
    "account" : "Charles"
  }
  {
    "figure" : 2361,
    "account" : "James"
  }
]

我想删除属于" James"的记录,我想出了这段代码。 jsonObjects包含您在上面看到的数组。

    var json2S = sharedDataAccess.jsonObjects

    for json2DX in 0..<json2S.count {
        var delIndex: Int? = nil
        for (jsonK, subJson) in sharedDataAccess.jsonObjects[json2DX] {

            print("json2D \(jsonK) \(subJson.stringValue) \(Name)")
            if jsonK == "account" && subJson.stringValue != Name {
                delIndex = json2DX
                print("DELETE IT  \(jsonK) \(subJson.stringValue) \(Name)")
            }
        }
        if delIndex != nil {
            json2S[0].arrayObject?.remove(at: delIndex!)
            print("DELETING IT  \(delIndex) \(Name)")
        }
    }

    sharedDataAccess.jsonObjects = JSON(json2S)

它有效,但不是我希望的方式。它删除了James [假设Name变量包含James],但它让我留下了这个。

[
  null,
  {
    "figure" : 1326,
    "account" : "Charles"
  }
]

James被替换为null ...一个null我不想要,我怎么能删除条目但是没有得到null或者确实只是删除了null!

1 个答案:

答案 0 :(得分:0)

好的,这是我的回答。发布它是好的措施;不完全相同的逻辑,但遵循Vadian的观点。

var json2S = sharedDataAccess.jsonObjects

    var jsonA:[[String:Any]] = []
    for json2P in sharedDataAccess.jsonObjects {
        print("json2P \(json2P)")
        var jsonDict:[String:Any] = [:]
        var json2Save = false
        for (jsonK, subJson) in json2P {
            print("jsonK \(jsonK) \(subJson.stringValue) \(fnName)")
            jsonDict[jsonK] = subJson.stringValue
            if jsonK == "account" && subJson.stringValue == fnName {
                json2Save = true
            }
        }
        if json2Save {
            jsonA.append(jsonDict)
        }
    }

    let sharedDataAccess.jsonObjects = JSON(jsonA)