Equatable であり、Equatable であるかどうかに関係なく AnyObject 型の変数 (この例では「variable2」) を持つ構造体を実装しようとしています。
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;
}
私はいくつかの異なる方法を試しましたが、うまく機能させることができませんでした。誰かがこれに対する解決策を持っていますか?最初のケースを解決するのが最善の状況ですが、2番目のケースも私のニーズを満たすかもしれません.