如何存储指向对象的指针并在以后引用它以从数组中删除项目?

时间:2016-01-12 22:26:34

标签: swift

我正在遍历一个对象数组,如果它与特定的项目列表匹配,则想要删除该项目。我不能删除该项,直到循环完成迭代数组。所以我想存储一个指向该对象的临时指针,然后在迭代完成后将其删除。

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 
}

我将如何做到这一点?提前谢谢。

1 个答案:

答案 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 }
}

这当然会删除项目的所有实例,而不仅仅删除最后一个已知的索引