相关疑难解决方法(0)

在Swift 2.0中使用equals运算符和NSObjects的错误?

好吧,在Swift 2.0中为NSObject子类编写自己的equals运算符时会发生一些奇怪的事情,如下所示:

func ==(lhs: MyObject, rhs: MyObject) -> Bool {
    return lhs.identifier == rhs.identifier
}
Run Code Online (Sandbox Code Playgroud)

对于看起来像这样的类:

class MyObject: NSObject {
    let identifier: String
    init(identifier: String) {
        self.identifier = identifier
    }
}
Run Code Online (Sandbox Code Playgroud)

这曾经在Swift 1.2及以下版本中运行得很好.它仍然有点工作:

let myObject1 = MyObject(identifier: "A")
let myObject2 = MyObject(identifier: "A")
let result = (myObject1 == myObject2)
// result is true
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都那么好,但是如果两个变量都是可选项呢?

let myObject1: MyObject? = MyObject(identifier: "A")
let myObject2: MyObject? = MyObject(identifier: "A")
let result = (myObject1 == myObject2)
// result is false, equals operator was never …
Run Code Online (Sandbox Code Playgroud)

equality nsobject swift2

11
推荐指数
2
解决办法
1033
查看次数

标签 统计

equality ×1

nsobject ×1

swift2 ×1