Skip to content

Instantly share code, notes, and snippets.

@swillits
Last active December 6, 2016 20:49
Show Gist options
  • Save swillits/5e08b7fcba79d4ce660df5759f44f49b to your computer and use it in GitHub Desktop.
Save swillits/5e08b7fcba79d4ce660df5759f44f49b to your computer and use it in GitHub Desktop.
Swift property 'shouldSet'
// -------------------------------------
// Want to do this
// -------------------------------------
var selectable = false {
willSet {
if !newValue {
selected = false
}
}
}
var selected: Bool {
shouldSet {
return selectable
}
didSet {
// ...
}
}
// -------------------------------------
// Would settle for this
// -------------------------------------
var selectable = false {
willSet {
if !selectable {
selected = false
}
}
}
var selected: Bool {
willSet {
if !selectable {
newValue = oldValue
return
}
}
didSet {
// ...
}
}
// -------------------------------------
// Must do this
// -------------------------------------
var selectable = false {
willSet {
if !newValue {
selected = false
}
}
}
fileprivate var _selected = false
var selected: Bool {
get {
return _selected
}
set {
guard selectable else { return }
if _selected != newValue {
_selected = newValue
// ...
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment