【发布时间】: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