[英]Redundant conformance of 'Generic' to protocol 'Equatable' in Swift 2.2
編譯時,Equatable出現錯誤。 我想在列表中添加查找或包含方法以檢查值。 我的下面的代碼
class Generic: NSObject, Equatable, NSCoding //Am Having an error - Redundant conformance of 'Generic' to protocol 'Equatable'
{
var genericCode: String?
var genericName : String?
var genericType : String?
var genericImageUrl : String?
var genericPhone: String?
var orgName : String?
override init()
{
self.genericCode = String("")
self.genericName = String("")
self.genericType = String("")
self.genericImageUrl = String("")
self.genericPhone = String("")
self.orgName = String("")
}
//Parameterzed Constructor for the Generic
init(genericCode: String , genericName: String , genericPhone: String, genericType: String, genericImageUrl : String)
{
self.genericCode = genericCode
self.genericName = genericName
self.genericType = genericType
self.genericImageUrl = genericImageUrl
self.genericPhone = genericPhone
}
required init(coder aDecoder: NSCoder) {
genericCode = aDecoder.decodeObjectForKey("genericCode") as? String
genericName = aDecoder.decodeObjectForKey("genericName") as? String
genericType = aDecoder.decodeObjectForKey("genericType") as? String
genericPhone = aDecoder.decodeObjectForKey("genericPhone") as? String
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(genericCode, forKey: "genericCode")
aCoder.encodeObject(genericName, forKey: "genericName")
aCoder.encodeObject(genericType, forKey: "genericType")
aCoder.encodeObject(genericPhone, forKey: "genericPhone")
}
}
func ==(lhs: Generic, rhs: Generic) -> Bool
{
return lhs.genericCode == rhs.genericCode
}
發生錯誤,是因為我正在使用NSCoding和NSobject嗎?
繼承NSObject
的類已經符合Equatable
。 因此,聲明Object: Equatable
是多余的。
但是,一致性並不意味着已經正確實現了( NSObject
只是檢查指針是否相同)。 如果您希望為NSObject
正確實現Equatable
,只需排除協議一致性聲明( : Equatable
),但仍然可以實現比較方法:
static func ==(lhs: Object, rhs: Object) -> Bool {
return lhs.text == rhs.text
}
根據文檔 , NSObject
符合Equatable
:
符合
CVarArgType
CustomDebugStringConvertible
CustomStringConvertible
平等的
可散列
NSObjectProtocol
...因此,就像您的錯誤所說,符合Equatable是多余的...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.