gpt4 book ai didi

macos - Swift 绑定(bind)到 Objective-C bool 值

转载 作者:行者123 更新时间:2023-11-28 07:17:30 25 4
gpt4 key购买 nike

我有一个按钮 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com