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年也能正常工作,我很惊讶