我正在遍历一个对象数组,如果它与特定的项目列表匹配,则想要删除该项目。我不能删除该项,直到循环完成迭代数组。所以我想存储一个指向该对象的临时指针,然后在迭代完成后将其删除。
public func deleteItem(item: NSDictionary) {
for object in self.objects() {
if object .isEqualToDictionary(item as! [String : String]) {
//Store pointer to matched item
}
}
//Delete matched item
}
我将如何做到这一点?提前谢谢。
答案 0 :(得分:3)
使用.enumerate()
进行简单的循环索引应该可以实现您的目标。
public func deleteItem(item: NSDictionary) {
var deletionIndex = 0 //Initialize an index with wider scope.
for object in self.objects().enumerate() { //Add .enumerate()
//Add .element to get the object and .index for the index
if object.element.isEqualToDictionary(item as! [String : String]) {
//Store index to matched item instead of a pointer
deletionIndex = object.index
}
}
//Delete matched item
self.objects().removeAtIndex(deletionIndex)
}
我觉得这实际上应该可以通过过滤操作轻松实现:
public func deleteItem(item: NSDictionary) {
self.objects = self.objects.filter{ $0 != item }
}
这当然会删除项目的所有实例,而不仅仅删除最后一个已知的索引