我正处于测试阶段6,不确定这是否是我在Swift语言中应该注意的错误。
我在class B
中声明了一组class A
个对象。在A中,我有一个函数来查看数组中是否存在某个对象。除非我在下面的示例中使用contains
函数失败并出现编译器错误
继承了B类中的NSObject。那么这里的问题是什么,我应该总是从NSObject继承吗?
class B {
....
}
class A {
var arr: Array<B> = Array<B>()
func check(obj: B) -> Bool {
return contains(arr, obj)
}
}
答案 0 :(得分:7)
为了能够被 contains 使用,您的类必须实现协议 Equatable 。当您从NSObject继承时,这是为您实现的。如果你想自己做,你可以这样做:
func == (lhs: B, rhs: B) -> Bool {
return lhs === rhs
}
class B : Equatable {
}
在此处查看有关Equatable的更多信息:https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/Equatable.html