user5349223
user5349223

Reputation:

How to use a NSUserDefault to store a UISwitch state in Swift

I have a Global Bool called InGameMusicOnOff and its key is called InGameMusicKey. This Bool determines weather the UIswitch will be to the left or right upon opening the app. but it doesn't work in other words the Bool value doesn't get saved to NSUser default. so overtime i one my app the state is exactly the same as it originally was even if i change its state by tapping it. I simply need to save the Boolean value. I'm using Xcode 6.4 in swift.

Code:

 import AVFoundation
 import Foundation
 import SpriteKit
 import GameKit
 import UIKit
 import iAd

var InGameMusicOnOff = Bool()
var InGameMusicKey = "InGameMusicOnOff"

class SoundController: UIViewController {
 override func viewDidLoad()  {
    super.viewDidLoad()




    if InGameMusicOnOff == true {
        InGameMusicOnOff = true
        NSUserDefaults.standardUserDefaults().objectForKey("InGameMusicOnOff") as! Bool!
    }
    if InGameMusicOnOff == false{
       self.SwitchMain.on = false
       InGameMusicOnOff = false
        NSUserDefaults.standardUserDefaults().objectForKey("InGameMusicOnOff") as! Bool!

    }
  }
     func SwitchMainOnOff() {
    if SwitchMain.on {
        println("SwitchMain is on")
        InGameMusicOnOff = true
        NSUserDefaults.standardUserDefaults().objectForKey("InGameMusicOnOff") as! Bool!

    }
     if SwitchMain.on == false {
        println("SwitchMain is off")
        InGameMusicOnOff = false
         NSUserDefaults.standardUserDefaults().objectForKey("InGameMusicOnOff") as! Bool!           
      }


     @IBAction func SwitchMain(sender: AnyObject) {
         SwitchMainOnOff()


      }
    }

Upvotes: 1

Views: 950

Answers (1)

Abhinav
Abhinav

Reputation: 38162

This is how you can save/fetch BOOL (UISwitch state being bool) in User Defaults:

[[NSUserDefaults standardUserDefaults] setBool:ButtonState forKey:@"buttonState"];
[[NSUserDefaults standardUserDefaults] boolForKey:@"buttonState"];

Swift Way:

NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"buttonState")
let buttonState = NSUserDefaults.standardUserDefaults().objectForKey("buttonState") as! Bool

if buttonState == true {

}

Upvotes: 1

Related Questions