开发者社区> 问答> 正文

在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' 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 21:46:28 626 0
1 条回答
写回答
取消 提交回答
  • 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。

    2020-02-08 21:46:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OpenStack Swift 海量小文件优化之路 立即下载
From Java/Android to Swift iOS 立即下载
Swift在Airbnb的应用实践 立即下载