小编典典

Swift:从数组中删除特定对象的更好方法?

swift

我试图通过代码提高效率,但是我却放屁了。我编写的这段代码很好用,并且完全满足我的需要:它检查一个数组并删除一个未知索引处的Object。但是我觉得有一种更好,更有效的编写方法。我去了Array.remove(at
:),但这需要一个已知的索引。我正在使用大的O表示法,并且不知道如何使它更易于处理。有任何想法吗?

 // create a new object array
 var sort : [MyCustomObject] = []

//iterate through my object array

        for i in objectArray{
            if i === objectToRemove{
            }
            else{
                sort.append(i)
            }
        }

     // set old array to sort, which no longer has the unwanted object 
        self.objectArray = sort

阅读 441

收藏
2020-07-07

共1个答案

小编典典

使用firstIndex(where:)index(where:)
Swift 4.1 和更早版本中先前称为)使用谓词在数组中搜索对象{ $0 === objectToRemove },然后调用remove(at:)该数组将其删除:

if let idx = objectArray.firstIndex(where: { $0 === objectToRemove }) {
    objectArray.remove(at: idx)
}

这使您可以搜索对象是否Equatable存在。

2020-07-07