我有班级产品
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只是字符串数组时,它工作正常,但现在我需要对象。
关于错误:首先它是"找不到"!"接受提供的参数。删除感叹号后,它是"无法调用包含类型'的参数列表(@lvalue [Products,$ T8]'
答案 0 :(得分:3)
要使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
}