我是否应该始终从Swift类中的NSObject继承而不是丢失某些功能

时间:2014-09-06 23:14:46

标签: swift

我正处于测试阶段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)
  }
}

1 个答案:

答案 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