我有一个按钮shuffleButton
,您可以点击以切换随机播放。
由于我想在应用关闭时存储该属性,因此我将自定义属性selected
绑定到Bool,从shuffleButton
绑定到用户默认值。
shuffleButton.bind("selected", toObject: NSUserDefaultsController.sharedUserDefaultsController(), withKeyPath: "values.shuffle", options: nil)
这只是一种方式。如果我设置了用户默认属性,则按钮会更新。
NSUserDefaults.standardUserDefaults().setValue(true, forKey: "shuffle")
// test it out
println(NSUserDefaults.standardUserDefaults().valueForKey("shuffle"))
=> 1
println(shuffleButton.selected)
=> true
但是,如果我更新按钮上的selected
属性,则不会更新用户默认值。
shuffleButton.selected = true
// test it out
println(NSUserDefaults.standardUserDefaults().valueForKey("shuffle"))
=> 0
println(shuffleButton.selected)
=> true
知道为什么吗? Swift Bool值是否未正确桥接到Objective-C?
答案 0 :(得分:1)
尝试使用setBool设置bool值,因为bool不是一个对象,这就是为什么iOS提供此方法来保存bool值。 你不需要桥接shuffleButton.selected将接受swift bool值,一切都用swift语言重写(检查类引用)以下样本工作正常
let defs = NSUserDefaults.standardUserDefaults();
var k = true;
defs.setBool(k, forKey: "bool");
defs.setDouble(2.5, forKey: "foo");
defs.synchronize();
var ud = defs.doubleForKey("foo");
var bo = defs.boolForKey("bool");
println("default = \(ud) bool =\(bo)");
shuffleButton.selected = bo;
答案 1 :(得分:0)
当您更新(更改值)SuffleButton时,还会更新您的NSUserdefault。
shuffleButton.selected = true
NSUserDefaults.standardUserDefaults().setBool(shuffleButton.selected as Bool!, forKey: "shuffle")
NSUserDefaults.standardUserDefaults().synchronize()