2017-03-02 30 views
-1

我是iOS新手,swift。爲了比較swift中的類的實例,我們必須符合Equatable協議並添加==方法。但是當我們在UIViewController中使用兩個tableviews時,我們在委託方法中使用==來比較tableviews。在swift中比較UITableView的實例

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

    } 
    else if tableView == mTableViewTwo 
    { 

    } 
} 

我檢查了UITableView文檔,但它不符合可比較協議。我應該如何比較UITableViews?

+0

你到底要比較?你想比較tableviews的內容嗎? –

+0

mTab​​leViewOne和mTableViewTwo是'可能'IBOutlets,並且比較正在測試兩個IBOutlet引用是否相等。這是一個有效的測試。 – Damo

+0

我的問題是我怎麼能比較實例與==不符合可比較協議 –

回答

2

所有的UIKit類都是從NSObject派生的(間接的)並且NSObject正在確認爲Equatable協議。因此,您可以使用==運算符比較兩個UITableView參考。

的UITableView - > UIScrollView中 - > UIView的 - > UIResponder - > NSObject的(確認到Equatable協議)

+0

是的,這是正確的。 NSObject符合Equatable,UITableView間接是NSObject的子類 –

+0

@sahil,'==='運算符怎麼樣? –

+0

@Karthick ===(與)運算符指的是完全相同的類實例。和==(等於)意味着兩個實例在值中被認爲是「相等」或「等價」。 – Sahil