在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 3Value of type '[Any]' has no member 'removeObject'
回答:
雨燕等同NSMutableArray
的removeObject
是:
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+你可以删除一个或多次出现beta
用removeAll(where:)
:
array.removeAll{$0 == "beta"}
以上是 在Swift 3中从数组中删除对象 的全部内容, 来源链接: utcz.com/qa/416474.html