2016-08-29 42 views
1

所以我有一個類平等的自定義操作,我想,如果他們不過是未繳當我問,如果向左或向右==無我的操作被調用返回true。是否有另一種或更好的方法來做到這一點?檢查定製nill平等==操作符

public func == (left: classXYZ?, right: classXYZ?) -> Bool { 
    if left == nil && right == nil { 
     return true 
    } 
    if left != nil && right != nil { 
     return left!.uniquID == right!.uniquID 
    } 
    return false 
} 
+2

順便說一句,爲什麼你不這樣做:'return left?.uniquID == right?.uniquID'?這將返回true如果兩者都是零。 – ozgur

+0

使用無校驗構建到另一個類,聰明。該deff工作。但是,如果我不能這樣做,我怎麼會做一個零檢查出去打電話給我自己的運營商 – CWineland

+0

你使用哪個版本的Swift? –

回答

3

下面的代碼,使你的類Equatable

class ClassXYZ: Equatable { 
    let uniqueID: String 

    init(uniqueID: String) { 
     self.uniqueID = uniqueID 
    } 
} 

func ==(left: ClassXYZ, right: ClassXYZ) -> Bool { 
    return left.uniqueID == right.uniqueID 
} 

你不需要(你不能)顯式指定nil == niltrue,它已經內置到斯威夫特,看看

let a: ClassXYZ? = nil 
let b: ClassXYZ? = nil 

print(a == b) // true