2017-03-02 6 views
-1

私はiOS、swiftを初めて使用しています。迅速にクラスのインスタンスを比較するには、Equatableプロトコルとadd ==メソッドに準拠する必要があります。しかし、UIViewControllerで2つのテーブルビューを使用する場合、デリゲートメソッドで==を使用してテーブルビューを比較します。スウィフトでのUITableViewのインスタンスの比較

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    if tableView == mTableViewOne 
    { 

    } 
    else if tableView == mTableViewTwo 
    { 

    } 
} 

私はUITableViewドキュメントをチェックしましたが、同等のプロトコルに準拠していません。どのように私はUITableViewsを比較する必要がありますか?

+0

何を正確に比較したいのですか?あなたはテーブルビューの内容を比較したいですか? –

+0

mTab​​leViewOneとmTableViewTwoは 'おそらく' IBOutletsであり、比較は2つのIBOutlet参照が等しいかどうかをテストしています。これは有効なテストです。 – Damo

+0

私の質問は、どのように準拠しないで==のインスタンスを比較できるかです。Equatableプロトコル –

答えて

2

すべてのUIKitクラスはNSObjectから(間接的に)派生し、NSObjectEquatableプロトコルに確認されています。したがって、==演算子を使用して2つのUITableView refを比較できます。

のUITableView - > UIScrollViewの - >のUIView - > UIResponder - > NSObjectの(Equatableプロトコルに確認)

+0

これは正しいです。 NSObjectはEquatableに準拠し、UITableViewはNSObject –

+0

@sahilの間接的なサブクラスですが、 '==='演算子はどうでしょうか? –

+0

@Karthick ===(同じ)演算子は、まったく同じクラスインスタンスを参照します。 ==(等しい)は、2つのインスタンスが値が「等しい」または「同等」とみなされることを意味します。 – Sahil

関連する問題