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

Swift: Is there a way to test if object cast as AnyObject conforms to Equatable?

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

func value(key: String) -> AnyObject?
func setValue(value: AnyObject?, key: String)

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

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

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

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

所以你可以这样做:

if let myValue = myObject.value(myKey) as? Equatable {
    ...
}