【问题标题】:NSUserDefaults Seemingly not Creating Globally Accessible VariablesNSUserDefaults 似乎没有创建全局可访问的变量
【发布时间】:2015-03-18 04:12:19
【问题描述】:

总的来说,我是 Swift 和 iOS 的新手,希望能对此提供任何帮助...我正在制作一个应用程序,其中包含一个名为 ViewController.swift 的文件,其中包含 ViewController 类,另一个文件名为BTService.swift,其中包含 BTService 类。我在 VC 中设置了一个滑块,我想获取它的值并在 BTService 类中使用它。我之前问过一个关于这个的问题(Swift Reference Variable from Specific Instance of Different Class),有人建议我使用NSUserDefaults 来完成这个。这是我的 VC 类,滑块值 positionSlider.value 分配给一个键 sliderValue

class ViewController: UIViewController { @IBOutlet var positionLabel: UILabel! @IBOutlet var positionSlider: UISlider! @IBOutlet var connectionLabel: UILabel! @IBAction func sliderValChanged(sender: UISlider) {

    let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    println(positionSlider.value)
    defaults.setFloat(Float(positionSlider.value), forKey: "sliderValue") // Write to NSUserDefaults
    defaults.synchronize()
    let currentValue: Float = defaults.floatForKey("sliderValue")
    var currentValueString=NSString(format: "%.5f", currentValue)

sliderValueNSUserDefaults 中存储为float。现在,根据我的理解,我可以去我的BTService 班级并简单地这样做:

@IBAction func sliderValChanged(sender: UISlider) { let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults() let currentValue: Float = defaults.floatForKey("sliderValue") println(currentValue)
}

但是,这不起作用。我没有收到任何语法错误,但是当我调整滑块时,我也没有看到任何打印到控制台的值。有趣的是,当我在 VC 中放置 println 语句时,我确实看到了该值的输出,这表明 currentValue 正在被定义并且正在按应有的方式运行。对此的任何帮助将不胜感激。非常感谢!

【问题讨论】:

  • 你检查positionSlider.value是否符合float?
  • 是的,我很确定这是它的默认类型。
  • positionSlider.value 已经返回一个浮点数。无需强制同步
  • 您应该从滑块而不是从 userDefaults 中读取值
  • 如果您想在滑块值更改时存储滑块值,您需要在本例中使用滑块值更新 userDefaults 键“sliderValue”的值 sender.value

标签: ios objective-c iphone swift uiviewcontroller


【解决方案1】:
@IBAction func sliderValChanged(sender: UISlider) {
    NSUserDefaults.standardUserDefaults().setFloat(sender.value, forKey: "sliderValue")
    let currentValue = NSUserDefaults.standardUserDefaults().floatForKey("sliderValue")
    println(currentValue)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多