Я пытаюсь управлять переменным так:Если позволить положение при получении от NSUserDefaults()
var isFinished: Bool {
get {
return NSUserDefaults.standardUserDefaults().boolForKey("isFinished")
}
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "isFinished")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
Это работает, однако, я пытаюсь сделать его более безопасным путем использования if let
при получении :
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()
}
}
Это даст желтую ошибку, хотя: «Условный бросок от„Bool“до„Bool“всегда удается.»
Хорошо тогда:
if let isFinished = NSUserDefaults.standardUserDefaults().boolForKey("isFinished") {
return isFinished
}
Теперь еще хуже: "Initializer для условной привязки должны иметь факультативный тип, а не" Bool"
Что такое правильный способ обработки этого?
Я надеюсь, что они это изменить, OPTIONALS бы идеально подходят для этого. –
@TimVermeulen Согласно рекомендации Apple о регистрации значений по умолчанию для 'NSUserDefaults', чтобы иметь надежные состояния, необязательные варианты вообще не нужны. – vadian
Спасибо, я не знал этого! – nontomatic