如何使用“包含”两个对象数组
我有类产品
class Products { var name:String = "" var number:Int = 0 init(name: String, number: Int) { self.name = name self.number = number } }
然后在视图控制器
var productFirst:[Products] = [Products(name: "First", number: 1)] var productSecond:[Products] = [Products]()
我使用productFirst来填充tableView。
我想添加选定的行到productSecond,它的工作原理:
productSecond.append(productFirst[indexPath.row])
但我不想在数组中重复项目,所以我做了
if !contains(productSecond, productFirst[indexPath.row]) { productSecond.append(productFirst[indexPath.row]) }
我得到错误。 如何改变它? 当productFirst和productSeconds只是string数组,它的工作正常,但现在我需要的对象。
关于错误:首先是“无法find接受提供参数的”!“的重载。删除感叹号后,它是”无法用types的参数列表调用包含“(@lvalue [Products,$ T8)'
对于contains()
函数来说, Products
类应该实现Equatable
协议。 只有这样我们才能检查两个元素是否相等。
class Products : Equatable { var name:String = "" var number:Int = 0 init(name: String, number: Int) { self.name = name self.number = number } } func ==(lhs: Products, rhs: Products) -> Bool { return lhs.name == rhs.name && lhs.number == rhs.number }