我正在尝试实现一个结构,它是 Equatable 并且有一个 AnyObject 类型的变量(在本例中为“variable2”),它可能是或不是 equatable。
struct MyStruct : Equatable{
var variable1 : String;
var variable2 : AnyObject;
}
func == (obj1 : MyStruct, obj2 : MyStruct) -> Bool {
if(obj1.variable2.conformsToProtocol(Equatable) && obj2.variable2.conformsToProtocol(Equatable)) {
//...
} else {
//...
}
return ...
}
起初我试图检查 variable2 是否符合 Equatable 协议,但这样做我得到一个编译错误。
在另一种方法上,我尝试将 ' variable2
' 更改为,Equatable
但即便如此,我仍然有一个错误告诉我它只能用作通用约束。
struct MyStruct : Equatable{
var variable1 : String;
var variable2 : Equatable;
}
func == (obj1 : MyStruct, obj2 : MyStruct) -> Bool {
return obj1.variable2 == obj2.variable2;
}
我尝试了一些不同的方法,但没有设法让它工作。有没有人对此有解决方案?解决第一种情况将是最好的情况,但第二种情况也可能满足我的需求。