【问题标题】:Swift: Is not saving NSUserDefaults.standardUserDefaults valuesSwift:不保存 NSUserDefaults.standardUserDefaults 值
【发布时间】:2016-07-05 17:16:08
【问题描述】:

我正在尝试将键值保存在 NSUserDefaults 中,但未保存。这是我的代码:

func saveData() {

    let userDefaults = NSUserDefaults.standardUserDefaults()
    userDefaults.setObject("blablabla", forKey:"data")
    userDefaults.synchronize()
}

你们谁知道为什么这些数据没有被保存?

非常感谢您的帮助。

【问题讨论】:

  • 你怎么知道它没有保存那些值,例如“blablabla”?
  • 当我尝试加载值“userDefaults.dictionaryForKey("data")”时总是 nil
  • blablabla 显然不是字典。 ;)

标签: ios swift nsuserdefaults


【解决方案1】:

Swift 2.x:

根据 Apple 消息来源:

public func objectForKey(defaultName: String) -> AnyObject?

检索您可以使用的值:

if let value = userDefaults.objectForKey("data")  {
    // do whatever you want with your value
    // P.S. value could be numeric,string,..
}

【讨论】:

  • Apple 明确不建议在 NSUserDefaults 中使用 valueForKey。这是objectForKey
  • 我在我的公共应用程序中没有问题,你在哪里读到它,它来自来源,你能描述一下原因吗?
  • valueForKey 是一种具有特殊行为的 KVC 方法。除非你真的需要 KVC,否则不要使用它。请在NSUserDefaults 中发布Apple 使用valueForKey来源
  • 如果您在设置之前准确地检查了您的属性,那么您永远不会提供 KVC。我从不谈论在 NSUserDefaults 中使用 valueForKey 的 Apple 源,我谈论的是 Apple 源中的可用性。
  • 请链接一个苹果不推荐使用的文档,它会很有趣。我需要知道,谢谢。
【解决方案2】:

我认为你做错了,试试这样:

let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject("blablabla", forKey:"data")



let defaults = NSUserDefaults.standardUserDefaults()
if let name = defaults.stringForKey("data") {
    print(name)
}

您将无法使用dictionaryForKey 访问字符串,因为字符串不是字典值类型。如果您需要任何进一步的帮助,请告诉我。

【讨论】:

    【解决方案3】:

    您将无法使用“dictionaryForKey”访问字符串,因为字符串不是字典值类型。您需要使用:

    if let savedString = userDefaults.stringForKey("data") {
        print(savedString)
    }
    

    如果您还有其他问题,请随时告诉我:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多