在Swift 3中从数组中删除对象

在我的应用程序中,选择单元格时在数组中添加了一个对象,重新选择单元格时取消选择并删除了对象。我使用了该代码,但给了我错误。

extension Array {

func indexOfObject(object : AnyObject) -> NSInteger {

return (self as NSArray).indexOfObject(object)

}

mutating func removeObject(object : AnyObject) {

for var index = self.indexOfObject(object); index != NSNotFound; index = self.indexOfObject(object) {

self.removeAtIndex(index)

}

}

}

class MyViewController: UITableViewController {

var arrContacts: [Any] = []

var contacts: [Any] = []

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {

arrContacts.removeObject(contacts[indexPath.row])

}

}

它给了我2像这样的错误:

C-style for statement has been removed in Swift 3

Value of type '[Any]' has no member 'removeObject'

回答:

雨燕等同NSMutableArrayremoveObject是:

var array = ["alpha", "beta", "gamma"]

if let index = array.firstIndex(of: "beta") {

array.remove(at: index)

}

。完全没有必要强制NSArray使用indexOfObject:

该API index(of:也可以使用,但这会导致不必要的隐式桥强制转换为NSArray

如果同一对象多次出现,请使用filter。但是,在像数据源数组这样的情况下,将索引与特定对象相关联的情况firstIndex(of是可取的,因为它比快filter

在斯威夫特4.2+你可以删除一个或多次出现betaremoveAll(where:)

array.removeAll{$0 == "beta"}

以上是 在Swift 3中从数组中删除对象 的全部内容, 来源链接: utcz.com/qa/416474.html

回到顶部