2017-01-17 6 views
0

私はブロックは下記見た場合を実装しようとしています:スウィフト3:Array.contains(customObject)

loggedInUser.followingは、カスタム Userクラスの配列であり、userToViewが Userクラスの単一のインスタンスである
if loggedInUser.following.contains(userToView) { 

    } 

class User { 
    .... 
} 

しかし、loggedInUser.following.contains(userToView)は以下の見誤りを投げている:期待される引数の型に

は、型の値を変換できません。 'ユーザー' '(ユーザ)がスローされます - >ブール'

を私は印象の下では、私は2つのユーザーが等しいかどうかを判断する関数のいくつかの並べ替えを実装する必要がありますが、私はどのようにそのような関数を実装するか分からない。どんな助けでも大歓迎です。前もって感謝します!

+0

を使用する場合は、ユーザークラスをEquatableプロトコル –

+0

に準拠させる必要があります。class User:Equatable { せ名:文字列 必要INIT(名:文字列){ self.name =名 }} FUNC ==(LHS:ユーザー、RHS:ユーザー) - >ブール{戻りlhs.name == rhs.name } ' –

+0

' let users = [ユーザー(名前: "a")、ユーザー(名前: "b")] 'およ​​び ' users.contains(ユーザー(名前: "z"))// false' –

答えて

1

下のコードを使用することができますアドバイスありがとうございました。

class User: Equatable { 
    //... 
    var id = Int() //Unique Identifier 
    //... 
} 

func ==(lhs: User, rhs: User) -> Bool { 
    return lhs.id == rhs.id 
} 

と、上記のコードを実行した後、私は何の問題もなく、次を呼び出すことができました:予想通り

すべては次の関数を作成し、「Equatable」プロトコルを実装した後に働いた

if loggedInUser.following.contains(userToView) { 
    ... 
} 
1

if (loggedInUser.following as NSArray).contains(userToView) { 

}