【问题标题】:How to remove a SwiftyJSON element?如何删除 SwiftyJSON 元素?
【发布时间】: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() }。

标签: ios swift swifty-json


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多