不安全的可变地址崩溃

Tim*_*Sim 10 swift

我有一个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错误无济于事,因为几乎没有结果.

den*_*T30 0

最好是

使用

      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)