我有一个按钮 shuffleButton
,您可以单击它来切换随机播放。
因为我喜欢在应用程序关闭时存储该属性,所以我绑定(bind)了一个自定义属性 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?
最佳答案
尝试使用 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;
关于macos - Swift 绑定(bind)到 Objective-C bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857361/