私は、Swiftを使用してNSUserDefaultsに保存されたブール値を使用してifステートメントを実行する方法を理解するのに苦労しています。ブール値をNSUserDefaultsに保存する方法は知っていると思いますが、確認していただければ幸いです。これは、Swiftの使い方を理解しようとしているObjective-Cコードです。
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"onoroff"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"onoroff"];
}
これは、これまでのところSwiftにあるものです...
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff") != nil{
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
私はそれを理解しているかもしれないと思います。これがブール値をNSUserDefaultsに保存し、それと共にifステートメントを使用する正しい方法であることを誰かが確認できますか?ここにあります:
if !NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}else{ NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
if NSUserDefaults.standardUserDefaults().boolForKey("onoroff") == true
上記のコードは、キーの値がtrueかどうかをチェックするだけです。
または
if NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
上記のコードは、キーの値がないかどうか、キーの値が真であるかどうかをチェックします(「onoroff」のUserDefaultに何も挿入されていないことを意味します)。
[〜#〜]編集[〜#〜]
if !NSUserDefaults.standardUserDefaults().objectForKey("onoroff")
{
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}
else
{
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
Swift 3.0
let defaults = UserDefaults.standard
標準のデフォルトファイルを作成し、存在しない場合は構成し、存在する場合は開きます。
if !UserDefaults.standard.bool(forKey: "onoroff") { UserDefaults.standard.set(true, forKey: "onoroff") } else { UserDefaults.standard.set(false, forKey: "onoroff") }
if !defaults.standard.bool(forKey: "onoroff") {
defaults.standard.set(true, forKey: "onoroff")
} else {
defaults.standard.set(false, forKey: "onoroff")
}
回答を訂正してくれてありがとう@Fred :-)
受け入れられた答えは正しいです。これは私がそれをするのが好きな方法です(Swift 3.0):
struct Settings {
fileprivate struct Keys {
static let soundKey = "soundKey"
}
static var sound: Bool {
set {
UserDefaults.standard.set(newValue, forKey: Keys.soundKey)
}
get {
if UserDefaults.standard.object(forKey: Keys.soundKey) == nil {
// Value for sound not yet set ... Setting default ...
UserDefaults.standard.set(true, forKey: Keys.soundKey)
return true
}
return UserDefaults.standard.bool(forKey: Keys.soundKey)
}
}
}
NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"onoroff")
var onoroff = NSUserDefaults.standardUserDefaults().objectForKey("onoroff") as Bool!
if (onoroff != nil && onoroff == false)
{
}
[〜#〜]編集[〜#〜]:
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
if NSUserDefaults.standardUserDefaults().boolForKey("onoroff"){
}else{
}
objectForKeyの代わりにブール値をチェックするには、boolForKeyを使用する必要があります。私はあなたが受け入れた答えの間違いとしてそれを見つけます
if (NSUserDefaults.standardUserDefaults().boolForKey("onoroff")){
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "onoroff")
}else
{
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "onoroff")
}
スウィフト3
これはスイッチのコードであり、trueまたはfalseをUserDefaultsに保存します。
let defaults = UserDefaults.standard
@IBOutlet weak var mySwitch: UISwitch!
@IBAction func switchValueChanged(_ sender: Any) {
self.defaults.set(mySwitch.isOn, forKey: "mySwitch")
}
次に、スイッチの保存された状態を表示するには...オン/オフ:
override func viewDidLoad() {
super.viewDidLoad()
mySwitch.isOn = self.defaults.bool(forKey: "mySwitch")
}
つまり、スイッチの状態を設定する1行と、ユーザーが保存した状態を取得してスイッチを適切に設定する1行です。