【发布时间】:2016-08-03 14:46:19
【问题描述】:
我有以下代码:
import RealmSwift
class MyClass:Object{
}
func test(){
let set = Set<MyClass>()
}
我收到一个编译时错误:类型“MyClass”不符合此行上的协议“Hashable”:
let set = Set<MyClass>()
MyClass 扩展了 Realm 的类 Object,它扩展了 RLMObjectBase,它扩展了 NSObject。 NSObject 符合 Hashable。它在扩展中声明。
为什么 MyClass 不符合 Hashable,因为它的超类之一符合它?
此外,如果我像这样添加 Hashable:
class MyClass:Object, Hashable
然后错误消失了,但是我的另一个同事,他在同一个项目上工作,得到一个编译时错误:
冗余协议一致性
这个错误意味着子类声明符合已经从超类继承的协议。
有人明白这里发生了什么吗?
【问题讨论】:
-
如果两台电脑的行为不同,可能是 Xcode 缓存问题,尝试清理项目并删除派生数据。
-
这已在 Swift 编译器中修复。见github.com/realm/realm-cocoa/issues/2519
标签: swift inheritance protocols realm hashable