在swift中比较两个自定义对象

时间:2015-04-29 11:34:38

标签: swift

我在Swift中定义了以下协议:

protocol RecordingObserver {
    func aFunc()
}

某处我必须比较实现此协议的两个对象,以检查它们是否相同。我面临的问题是显然Swift不允许我们这样做:

func areEqual(a:RecordingObserver,b:RecordingObserver){
    if a === b {
        println("Equal")
    }
}

知道为什么会这样吗?我怎么能以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:3)

您的课程需要支持Equatable协议才能使用==

https://developer.apple.com/library/ios/documentation/General/Reference/SwiftStandardLibraryReference/Equatable.html

或者如果您想使用===这样的东西......

protocol RecordingObserver {
    func aFunc()
}

class MyClass: RecordingObserver {
    func aFunc() {
        // Do something
    }
}

func areEqual(a: MyClass, b: MyClass){
    if a === b {
        println("Equal")
    }
}

答案 1 :(得分:1)

我相信有一个' isEqual' NSObject上的方法。如果您的自定义对象都是子类,则应该能够比较a.isEqual(b)