我正在使用 beta 6,不确定这是一个错误还是我应该在 Swift 语言中注意的问题。
我有一个在 class A
中声明的 class B
对象数组。在 A 内部,我有一个函数可以查看数组中是否存在某个对象。除非我在下面的示例中使用 contains
函数失败并出现编译器错误
在类 B 中继承 NSObject。那么这里有什么问题,我应该始终从 NSObject 继承吗?
class B {
....
}
class A {
var arr: Array<B> = Array<B>()
func check(obj: B) -> Bool {
return contains(arr, obj)
}
}
最佳答案
为了被contains 使用,您的类必须实现Equatable 协议(protocol)。当您从 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
关于swift - 我是否应该始终从 Swift 类中的 NSObject 继承而不丢失某些功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705637/