斯威夫特:为什么我不能使用'包含(:)"?

时间:2015-11-08 08:02:20

标签: swift swift2

第1步: 我宣布了一个名为ARDevice的协议:

protocol ARDevice {
    var deviceName:String{get}
}

第2步: 然后我用它来扩展NSNetService

extension NSNetService:ARDevice{
    var deviceName:String{
       get{
           return self.name
       }
    }
}

第3步:我创建了一个数组:

var deviceList = [ARDevice]()

第4步:我想在回拨方法中使用contains(:),但我无法: enter image description here

我该怎么做? 我必须实施任何协议吗?

1 个答案:

答案 0 :(得分:4)

 if !deviceList.contains(service) { }

只能在deviceList数组的元素 - 中使用 case ARDevice - 符合Equatable协议。特别是, 必须为他们定义==运算符。

这里最简单的解决方案是使用“基于谓词”contains() 方法:

if  !deviceList.contains ({ $0.deviceName == service.deviceName }) {
    deviceList.append(service)
}