Xcode
Swift
Equatable

Swift 3でオブジェクトの配列の中にプロパティが同一なオブジェクトがすでに存在するか調べる

More than 1 year has passed since last update.


やりたいこと


  • あるクラスのオブジェクトの配列を作りたい。

  • そのなかで、クラスの id が同じオブジェクトはその配列に2つ以上存在しないことを保証したい。


実装


  • Equatableプロトコルを実装しました。


  • static func ==(lhs: Hoge, rhs: Hoge) -> Bool 関数を実装して、何によって同じであるとするのかを決めてあげます。

  • できたら、 contains() を使って判定できます。


Playground.playground

class Hoge {

let id: Int
init(_ id: Int) { self.id = id }
}

extension Hoge: Equatable {
static func ==(lhs: Hoge, rhs: Hoge) -> Bool {
return lhs.id == rhs.id
}
}

Hoge(0) == Hoge(0) // => true
Hoge(1) == Hoge(0) // => false

let array = [Hoge(0), Hoge(1), Hoge(2)]

array.contains(Hoge(0)) // => true



参考