Swift - 使用 Objective-C 选择器的方法'*()' '*' 与具有相同 Objective-C 选择器的超类'NSObject'的 get '*' ter 冲突



我收到了此错误消息,因为将XCode更新为6.3.1。

/Users/MNurdin/Documents/iOS/xxxxx/Models/Message.swift:46:10: Method 'hash()' with Objective-C selector 'hash' conflicts with getter for 'hash' from superclass 'NSObject' with the same Objective-C selector

我的代码

var hash_ : UInt
func hash() -> UInt {
        return UInt(hash_);
    }

详细说明: @property(readonly) NSUInteger hashNSObject的objective-c属性,这意味着为该变量创建一个getter,即 hash()

您现在尝试定义一种相同名称和相同参数的方法(无),但使用不同的返回类型(UInt而不是NSUInteger,它将在Swift中使用Int)。因此,您会收到给定的错误。要解决该问题,您现在有两个选择:

  • 将返回类型更改为Int->将覆盖预定义的哈希函数
  • 选择一个不同的方法名称或添加参数

请参阅 NSObjectProtocol声明,其中 hash被声明:

var hash: Int { get }

您有三个问题:

  • hashvar,而不是func
  • 类型是Int,而不是UInt
  • 您没有使用override关键字

要解决这些问题,请改用此问题:

override var hash : Int {
    return /* (your hash logic) */
}

相关内容

最新更新