Innerhalb einer Klasse verwende ich eine Variable wie einen Prozentsatz, und ich möchte, dass es einige Grenzen hat. Zum Beispiel: Ich habe den Wert zwischen 0 und 100 liegen soll Wenn der Wert auf 105 gesetzt ist, dann wird der Wert gespeichert 100.Erstellen von Setter mit Grenzen in Swift
würde ich umgesetzt erste:
var percentage: Int{
set{
if (newValue < 0) {
self.percentage = 0
} else if (newValue > 100) {
self.percentage = 100
} else {
self.percentage = newValue
}
}
}
Leider bekomme ich einen Fehler EXC_BAD_ACCESS aufgrund einer Endlosschleife auf dem Setter. Suche nach einer Lösung, habe ich zwei verschiedene Ansätze gefunden:
Erster Ansatz mit zwei Variablen:
var percentageWithBoundaries: Int
var percentageWithoutBoundaries: Int{
get{
return percentageWithBoundaries
}
set{
if (newValue < 0) {
percentageWithBoundaries = 0
} else if (newValue > 100) {
percentageWithBoundaries = 100
} else {
percentageWithBoundaries = newValue
}
}
}
Zweiter Ansatz didSet:
var percentage: Int{
didSet{
if (percentage < 0) {
percentage = 0
} else if (percentage > 100) {
percentage = 100
}
}
}
ich die zweite glauben Ansatz ist besser: prägnanter und einfacher zu verstehen.
Ich würde gerne wissen, ob es eine bessere Praxis gibt oder ob eine dieser beiden bevorzugt werden sollte.
Danke!
Die Verwendung von 'didSet' ist definitiv der richtige Ansatz für das, was Sie wollen. – werediver
Danke, aber kannst du eine Erklärung geben, warum es für dich der beste Ansatz sein sollte? – Jojo44
Nur weil es der einfachste und geradlinigste Weg ist. – werediver