步骤 1:\n我声明了一个协议,名为ARDevice:
protocol ARDevice {\n var deviceName:String{get}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n步骤2:\n然后我用它来扩展NSNetService\xef\xbc\x9a
extension NSNetService:ARDevice{\n var deviceName:String{\n get{\n return self.name\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n第三步:我创建了一个数组:
\n\nvar deviceList = [ARDevice]()\nRun Code Online (Sandbox Code Playgroud)\n\n第 4 步:我想在回调方法中使用contains(:),但不能:\n
我该怎么做?\n我必须实施任何协议吗?
\n if !deviceList.contains(service) { }\nRun Code Online (Sandbox Code Playgroud)\n\ndeviceList仅当\ncase \xe2\x80\x93 中数组 \ xe2\x80\x93的元素ARDevice符合Equatable协议时才能使用。特别是,==必须为它们定义\n运算符。
这里最简单的解决方案是使用“基于谓词”的contains()方法:
if !deviceList.contains ({ $0.deviceName == service.deviceName }) {\n deviceList.append(service)\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |