我试图通过代码提高效率,但是我却放屁了。我编写的这段代码很好用,并且完全满足我的需要:它检查一个数组并删除一个未知索引处的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
使用firstIndex(where:)(index(where:)在 Swift 4.1 和更早版本中先前称为)使用谓词在数组中搜索对象{ $0 === objectToRemove },然后调用remove(at:)该数组将其删除:
firstIndex(where:)
index(where:)
{ $0 === objectToRemove }
remove(at:)
if let idx = objectArray.firstIndex(where: { $0 === objectToRemove }) { objectArray.remove(at: idx) }
这使您可以搜索对象是否Equatable存在。
Equatable