我有一个struct,有时,对于某些用户,在尝试访问该类型的变量时会出现崩溃.
struct AppSettings {
var mute:Bool {
didSet {
if mute != oldValue {
let savedSettings = NSUserDefaults.standardUserDefaults()
savedSettings.setBool(mute, forKey: KEY_SETTING_MUTE)
}
}
}
init() {
let savedSettings = NSUserDefaults.standardUserDefaults()
if let savedMute = savedSettings.objectForKey(KEY_SETTING_MUTE) as? Bool {
mute = savedMute
} else {
mute = false
}
}
}
var appSettings = AppSettings()
Run Code Online (Sandbox Code Playgroud)
在应用程序启动期间的某个地方,它有时会崩溃
if appSettings.mute { // This will sometimes cause a crash
} // in AppDelegate or the methods it calls
Run Code Online (Sandbox Code Playgroud)
这仅适用于某些用户,我似乎无法重现它.不是重现它是最糟糕的,因为它让我没有任何工作.
搜索unsafe mutable addressor错误无济于事,因为几乎没有结果.
最好是
使用
init() {
let savedSettings = UserDefaults.standard
let savedMute = savedSettings.bool(forKey: KEY_SETTING_MUTE)
Run Code Online (Sandbox Code Playgroud)
代替
init() {
let savedSettings = NSUserDefaults.standardUserDefaults()
if let savedMute = savedSettings.objectForKey(KEY_SETTING_MUTE) as? Bool {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1743 次 |
| 最近记录: |