我在Swift中定义了以下协议:
protocol RecordingObserver {
func aFunc()
}
某处我必须比较实现此协议的两个对象,以检查它们是否相同。我面临的问题是显然Swift不允许我们这样做:
func areEqual(a:RecordingObserver,b:RecordingObserver){
if a === b {
println("Equal")
}
}
知道为什么会这样吗?我怎么能以另一种方式做到这一点?
答案 0 :(得分:3)
您的课程需要支持Equatable协议才能使用==
或者如果您想使用===
这样的东西......
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)
。