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

标签 swift

我正在使用 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/

相关文章:

swift - 如何将字符串转换为 UInt32?

objective-c - Swift 和 ScriptingBridge.framework

ios - 如何在结构内部调用结构?

ios - countDownTimer = 0 的 UIDatePicker 显示 "0 hours 1 min"

swift - 删除时为表格 View 单元格设置动画

swift - Xcode 9.x 中 Core Image 和 "sig abrt"的自定义过滤器

arrays - 如何制作数组的精确副本?

swift 2 到 swift 3 : Cannot convert value of type '(Data?, NSError?) -> Void' to to expected argument type 'GTMSessionFetcherCompletionHandler?'

ios - 带有 iAd 横幅的 UITableView 出现奇怪的溢出

Swift Combine - 如何抛出错误并停止执行