ソート[petInfo : UIImage]()
の辞書を作成しようとしていますが、エラーが発生していますType 'petInfo' does not conform to protocol 'Hashable'
。私のpetInfo構造体はこれです:
struct petInfo {
var petName: String
var dbName: String
}
だから私はどういうわけかそれをハッシュ可能にしたいが、そのコンポーネントのどれもvar hashValue: Int
が必要です。フィールドが整数でない場合、プロトコルに準拠させるにはどうすればよいですか?この構造体のすべての出現に対して一意であることがわかっている場合、dbName
を使用できますか?
hashValue
関数からdbName.hashValue
を返すだけです。参考までに、ハッシュ値は一意である必要はありません。要件は、等しいと等しい2つのオブジェクトも同じハッシュ値を持つ必要があることです。
struct PetInfo: Hashable {
var petName: String
var dbName: String
var hashValue: Int {
return dbName.hashValue
}
static func == (lhs: PetInfo, rhs: PetInfo) -> Bool {
return lhs.dbName == rhs.dbName && lhs.petName == rhs.petName
}
}
Swift 5 _var hashValue:Int
_はfunc hash(into hasher: inout Hasher)
の代わりに廃止されました(Swift 4.2)で導入されたため) @rmaddyが与えた答え:
_func hash(into hasher: inout Hasher) {
hasher.combine(dbName.hashValue)
}
_