ios - 如何将 "contains"与两个对象数组一起使用

标签 ios arrays swift

我有类产品

class Products {

    var name:String = ""
    var number:Int = 0

    init(name: String, number: Int) {
        self.name = name
        self.number = number
    }
}

然后在 View Controller 中

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 只是字符串数组时,它工作正常,但现在我需要对象。

关于错误:首先是“找不到接受所提供参数的”! )'

最佳答案

要使 contains() 函数正常工作,Products 类应该实现 Equatable 协议(protocol)。只有这样我们才能检查两个元素是否相等。

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
}

关于ios - 如何将 "contains"与两个对象数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27887387/

相关文章:

ios - CircleCI for iOS - 缓存 cocoapods 依赖

c++ - 如何在构造函数中初始化 char 数组样式的字符串

c++ - 在 C++ 中查找等于数组的值

javascript - 带数字的变量在警报中不起作用

swift - NSOperation 中的 Firebase 异步回调未返回

swift - 默认值太复杂,无法使用基本的 '+' 运算符进行编译

swift - 使用更通用类型的系统类的协议(protocol)一致性

ios - 无法将 UIButton 向下转换为子类

ios - 错误 React Native IOS 异常 '-[__NSDictionaryM 长度] : unrecognised selector sent to

ios - self.perform segue 导致 View 不符合