我收到了此错误消息,因为将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 hash
是 NSObject
的objective-c属性,这意味着为该变量创建一个getter,即 hash()
。
您现在尝试定义一种相同名称和相同参数的方法(无),但使用不同的返回类型(UInt
而不是NSUInteger
,它将在Swift中使用Int
)。因此,您会收到给定的错误。要解决该问题,您现在有两个选择:
- 将返回类型更改为
Int
->将覆盖预定义的哈希函数 - 选择一个不同的方法名称或添加参数
请参阅 NSObjectProtocol
声明,其中 hash
被声明:
var hash: Int { get }
您有三个问题:
-
hash
是var
,而不是func
- 类型是
Int
,而不是UInt
。 - 您没有使用
override
关键字
要解决这些问题,请改用此问题:
override var hash : Int {
return /* (your hash logic) */
}