Swift:有没有办法测试转换为 AnyObject 的对象是否符合 Equatable?

Rob*_*Rob 5 generics ios swift2 equatable

我有一个具有键控属性的对象:

func value(key: String) -> AnyObject?
func setValue(value: AnyObject?, key: String)
Run Code Online (Sandbox Code Playgroud)

我想检查value从两个不同对象的具有相同键的函数返回的值是否为Equatable. Swift 抱怨是因为Equatable有一个Self引用并且只能在泛型中使用。有没有办法可以检查AnyObjectvalue函数返回的对象是否符合Equatable

BPC*_*orp -5

由于 Swift 2 的变化,我正在编辑我的答案

要检查协议一致性,只需使用is关键字即可。

但是当协议正在使用时你不能这样做Self(注意大写的S)。

所以你可以这样做:

if let myValue = myObject.value(myKey) as? Equatable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 你建议的方法不起作用。swift 编译器会产生以下错误:“协议‘Equatable’只能用作泛型约束,因为它具有 Self 或关联的类型要求” (3认同)