删除 SwiftyJSON 数组中的字典记录

Posted

技术标签:

【中文标题】删除 SwiftyJSON 数组中的字典记录【英文标题】:deleting a dictionary record in a SwiftyJSON array 【发布时间】:2017-03-04 19:14:48 【问题描述】:

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!

【问题讨论】:

基本上不要误用 SwiftJSON 作为集合类型。 SwiftyJSON 将 nil 值视为 NSNull,就像 JSON 一样。将 JSON 解析为标准集合类型 ArrayDictionary 并更改它们。 公平点;我会重新编码。 【参考方案1】:

好的,这是我的答案。张贴它是为了很好的衡量标准;不太一样的逻辑,但遵循了 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)

【讨论】:

以上是关于删除 SwiftyJSON 数组中的字典记录的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJson 从字典中的数组中获取值

Swift - 使用 swiftyJSON 根据字典中的值查找字典数组的索引

使用 SwiftyJSON 遍历数组字典字典

swiftyJSON检查value是否为null

如何使用 SwiftyJson 在 1 个 NSObject 中初始化 json 中的多个字典

SwiftyJson 数组中的数组