如何删除 SwiftyJSON 元素?

Posted

技术标签:

【中文标题】如何删除 SwiftyJSON 元素?【英文标题】:How to remove a SwiftyJSON element? 【发布时间】:2016-01-17 08:14:08 【问题描述】:

我有一个由SwiftyJSON 生成的 JSON 数组(例如,dataObj),我尝试像这样删除它的元素:

let count=dataObj.count
for var m=x; m<count; ++m 
    dataObj[m] = nil  // there is no removeAtIndex() somehow


print(dataObj.count)
print(dataObj)

执行后,dataObj.count 保持不变,print 现在显示 dataObj 变为

[空, 空值, 空值, ... ]

真正为 SwiftyJSON 移除元素的方法是什么?

【问题讨论】:

dataObj.removeAtIndex[m] 或 dataObj.removeAll() ...等 通过(增加)索引在重复循环中删除对象是一个非常糟糕的主意。假设您有两个元素并且您刚刚删除了object[0]。然后object[1] 变为object[0] 并且不再有索引1。这会导致一个漂亮的out of bounds 异常。在重复循环中按索引删除的唯一(安全)方法是向后删除。 @vadian 谢谢,我会向后删除。 @user3441734 如果我可以直接使用,我不会问这个问题。 为什么不能?顺便说一句,如果你想删除所有元素,为什么不使用 removeAll() ?正如 vadian 所说:“在重复循环中按索引删除的唯一(安全)方法是向后删除”,如果您只删除最后一个元素,则为真。在这种情况下,您可以使用 while dataObj.count > 0 dataObj.removeLast() 或(不使用索引)while dataObj.count > 0 dataObj.removeFirst() 。 【参考方案1】:

终于找到了删除SwiftyJSON创建的JSON(数组类型)中的一个元素的答案:

dataObj.arrayObject?.removeAtIndex(m)

顺便说一句,当SwiftyJSON以字典类型返回JSON时,移除一个元素:

jsonObj.dictionaryObject?.removeValueForKey(keyValue)

更新

斯威夫特 3+ -

数组:

dataObj.arrayObject?.remove(at: m)

字典:

jsonObj.dictionaryObject?.removeValue(forKey: keyValue)

【讨论】:

【参考方案2】:

更新 Joe 对 Swift 4 的回答。

从 JSON 中删除 dictionary 元素:

json.dictionaryObject?.removeValue(forKey: key)

从 JSON 中删除 array 元素:

json.arrayObject?.remove(at: index)

【讨论】:

以上是关于如何删除 SwiftyJSON 元素?的主要内容,如果未能解决你的问题,请参考以下文章

从 Xcode 项目中删除 SwiftyJSON 框架/cocoapod

如何使用 SwiftyJSON 获取字符串元素数组?

如何使用 SwiftyJSON 从我的 JSON 中获取选定的元素并将其打印在控制台上?

SwiftyJSON 数组元素?

SwiftyJSON - 解析时如何遍历子节点

如何删除jQuery对象中元素