第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(:)
,但我无法:
我该怎么做? 我必须实施任何协议吗?
答案 0 :(得分:4)
if !deviceList.contains(service) { }
只能在deviceList
数组的元素 - 中使用
case ARDevice
- 符合Equatable
协议。特别是,
必须为他们定义==
运算符。
这里最简单的解决方案是使用“基于谓词”contains()
方法:
if !deviceList.contains ({ $0.deviceName == service.deviceName }) {
deviceList.append(service)
}