I'm trying to manage a variable like this:
var isFinished: Bool {
get {
return NSUserDefaults.standardUserDefaults().boolForKey("isFinished")
}
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "isFinished")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
This works, however, I'm trying to make it more safe by using an if let
when getting:
var isFinished: Bool {
get {
if let isFinished = NSUserDefaults.standardUserDefaults().boolForKey("isFinished") as? Bool {
return isFinished
}
}
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "isFinished")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
This will give a yellow error though: "Conditional cast from 'Bool' to 'Bool' always succeeds."
Alright then:
if let isFinished = NSUserDefaults.standardUserDefaults().boolForKey("isFinished") {
return isFinished
}
Now it's worse: "Initializer for conditional binding must have Optional type, not 'Bool'"
What's the correct way of handling this?