如何创建可以在Array中使用的Swift协议?

时间:2017-04-10 23:48:40

标签: swift protocols

我有两个不同的类(NSObject,RealmObject),它们应该符合一个常见的协议Listening。

protocol Listening: class {
  var filter: String? { get }
}

然后我有这个具有数组var allListeningObjects: [Listening]的父类,它应该包含符合这个协议的所有对象。但在我运行它之前,我收到了这个错误:输入'倾听'不符合协议' Hashable'

我愿意接受任何有助于这项工作的建议。

1 个答案:

答案 0 :(得分:2)

考虑到你得到的错误 - 你似乎试图将Listening协议用作字典中的键类型或集合中的元素类型 - 而不是数组中元素的类型。仔细检查allListeningObjects的类型定义,确保它实际上是一个数组,而不是一个集合或字典。

如果您打算在此上下文中使用Listening协议 - Apple has some nice documentation on how to implement Hashable