Ios 斯威夫特:有没有一种方法可以测试被转换为任何对象的对象是否符合equalable?

Ios 斯威夫特:有没有一种方法可以测试被转换为任何对象的对象是否符合equalable?,ios,generics,swift2,equatable,Ios,Generics,Swift2,Equatable,我有一个具有键控属性的对象: func value(key: String) -> AnyObject? func setValue(value: AnyObject?, key: String) 我想检查value函数使用来自两个不同对象的相同键返回的值是否为equalable。斯威夫特抱怨,因为equalable有一个Self引用,只能用于泛型。有没有办法检查从值函数返回的AnyObject对象是否符合equalable?由于Swift 2的更改,我正在编辑我的答案 要检查协议一致性

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

func value(key: String) -> AnyObject?
func setValue(value: AnyObject?, key: String)
我想检查
value
函数使用来自两个不同对象的相同键返回的值是否为
equalable
。斯威夫特抱怨,因为
equalable
有一个
Self
引用,只能用于泛型。有没有办法检查从
函数返回的
AnyObject
对象是否符合
equalable

由于Swift 2的更改,我正在编辑我的答案

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

但是当协议使用
Self
(注意大写字母S)时,您不能这样做

所以你可以做:

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

你的建议行不通。swift编译器产生以下错误:
协议“Equatable”只能用作一般约束,因为它具有自身或关联的类型要求
即使在2020年也能正常工作,我很惊讶