小编muv*_*aaa的帖子

Swift 2.0在包含NSObject子类时设置不正常

将我们的代码库升级到Swift2后,我遇到了异常的问题.Set不是预期的减法或联合.

class A: NSObject {
    let h: Int

    init(h: Int) {
        self.h = h
    }

    override var hashValue: Int {
        return h
    }
}

func ==(lhs: A, rhs: A) -> Bool {
    return lhs.hashValue == rhs.hashValue
}

let a = A(h: 1)
let b = A(h: 1)

var sa = Set([a])
let sb = Set([b])

sa.subtract(sb).count // Swift1.2 prints 0, Swift 2 prints 1

sa.contains(a) // Swift1.2 true, Swift 2 true
sa.contains(b) // Swift1.2 true, Swift 2 false
Run Code Online (Sandbox Code Playgroud)

看起来新的Set没有使用hashValue进行内部操作.任何想法是一个错误,或解决这个问题的方法?

set nsobject swift swift2

7
推荐指数
1
解决办法
1111
查看次数

标签 统计

nsobject ×1

set ×1

swift ×1

swift2 ×1