2017-10-16 6 views
0

タプル(Date、MyOwnClass)型の配列を持ち、タプル配列からターゲットタプルに等しい特定のタプルのインデックスを探します。 Xcodeでは、「.indexOf({$ 0 == targetTuple})」を使用しようとすると「バイナリ演算子==できません...」というエラーが表示されます。(Swift)タプル配列[(Date、MyClass)]からタプル要素(Date、MyClass)のインデックスを取得する方法は?

ありがとうございます!そのすべての要素もそれに準拠している場合あなたは自分のクラスがEquatableプロトコルを実装していることを確認する必要があるので、タプルを自動的に、Equatableプロトコルに準拠

+0

[MCVE] –

答えて

0

class MyClass { 
    var name : String 
    init(_ _name : String) { 
    name = _name 
    } 
} 

extension MyClass: Equatable { 
    public static func ==(lhs: MyClass, rhs: MyClass) -> Bool { 
    return lhs.name == rhs.name 
    } 
} 

let ar : [(Int, MyClass)] = [ 
    (1, MyClass("A")), 
    (2, MyClass("B")), 
    (1, MyClass("A")) 
] 

if let ix = ar.index(where:{$0 == (1, MyClass("A"))}) { 
    print(ix) 
} else { 
    print("not found") 
} 

// 0 is printed 
+0

マイナー補正を入力してください:あり等価要素のタプルの '=='演算子ですが、タプルは 'Equatable'プロトコルに準拠していません。 –

+0

ありがとうございます。プロトコルEquatableは私にとって新しいことなので、いつ使用するのか、それがなぜ私のタプルに必要なのかについては疑問があります。ありがとう!! –

関連する問題