簡體   English   中英

Swift 2.2中協議“ Equatable”的“泛型”冗余一致性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM