Ich frage mich, was ist falsch mit dem folgenden Code?Hash-Protokoll für ein Protokoll
import Foundation
enum SliderType: Int {
case analog = 1, discrete, highLow
}
protocol DataEntry: class, Hashable {
var hashValue: Int { get set } // hashable protocol requires this
var idx: Int { get set }
var category: String { get set }
var sliderType: SliderType { get set }
var sliderTitle: String { get set }
var sliderCurrentValue: Float { get set }
var sliderMinValue: Float { get set }
var sliderMaxValue: Float { get set }
}
func ==(lhs: DataEntry, rhs: DataEntry) -> Bool {
return lhs.idx == rhs.idx
}
Wie in diesem Screenshot zu sehen ist, ich bekomme immer wieder den Fehler Protocol 'DataEntry' can only be used as a generic constraint because it has Self or associated type requirements
Weiß jemand, was hier falsch sein könnte ?? Wie implementieren Sie ein Hashable-Protokoll für ein Protokoll?
Hmm - immer noch nicht geholfen. Ich bekomme immer den gleichen Fehler (dh "Protocol 'DataEntry' kann nur als generische Einschränkung verwendet werden, da es Selbst- oder assoziierte Typprüfungen benötigt"). Könnte es daran liegen, dass ich einige Klassen der '' DataEntry-Protokoll.Und diese fallen vielleicht nicht unter das Equatable-Protokoll - auch nicht mit Ihrer Idee, Generika einzuführen! Ich denke, ich muss vielleicht gleichwertige Arbeit für alle Klassen machen, die ich mit DataEntry gemacht habe ... Oder Sie haben keine andere Idee – iKK
@iKK Code, was das Fehler verursacht – Alexander
so ziemlich überall dort, wo ich 'DataEntry'such wie zum Beispiel in einem anderen Protokoll verwenden:?' Protokoll BalancesModel { \t \t func getEntries (_ completionHandler: @escaping (_ entries: [DataEntry]) -> Void) } 'oder in einer Klasse, zum Beispiel - wo ich eine Eigenschaft:' fileprivat e var entries = [DataEntry]() ' – iKK