I am Having an error in Equatable while compilation. I wanted to add find or contains method in the list to check the value. My Code Below
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
}
Error has occured , Is it because i am using NSCoding and NSobject?
A class inheriting NSObject
already conforms to Equatable
. So declaring Object: Equatable
is redundant.
However, the conformance does not mean that it has been implemented properly (NSObject
just checks whether the pointers are the same). If you wish to properly implement Equatable
for NSObject
, just exclude the protocol conformance statement (: Equatable
), but still implement the comparison method:
static func ==(lhs: Object, rhs: Object) -> Bool {
return lhs.text == rhs.text
}