ios - 如何在每次运行应用程序时更改 NSUserDefault 的默认返回值而不保存它

标签 ios swift nsuserdefaults

我正在使用 Bool UserDefault,除非在应用程序的其他地方发生更改,否则我希望它最初返回为 true。 不幸的是,除非另有说明,否则 UserDefault.bool(forKey:) 返回 false。我会在 viewDidLoad() 中将它设置为等于 true,但这会导致每次加载该屏幕时它都会被重置。

如何在 swift 中将初始默认返回值更改为 true 而不是 false

请尽可能使用swift。

最佳答案

你问的不是很清楚。您是在问如何做到这一点,以便在您的应用程序首次安装和运行时,您的 BOOL 值加载为真?

答案是使用 registerDefaults() 方法(正如 Martin R 在他的评论中提到的)。

您将一个 NSDictionary 传递给它,其中包含您要加载为“默认默认值”的键/值对。最好的地方是在应用委托(delegate)的初始化类方法中。这样一来,在您的任何应用程序运行其他代码之前,就会设置默认的默认键值对。

因此将此方法添加到您的应用委托(delegate)中:

class func initialize()
{
  NSUserDefaults.standardUserDefaults().registerDefaults(
    ["myDefault": true,
     "aStringDefault": "defaultStringValue"],
     "arrayDefault": [1, 2, 3,])
  //Do any other startup initialization that needs to happen 
  //before all your other app delegate code.
}

(未测试。可能需要稍作改动才能工作...)

编辑:

你可以注册任意多的默认值,也可以在默认值中写入更复杂的结构。我更新了示例代码以显示更复杂的示例)

关于ios - 如何在每次运行应用程序时更改 NSUserDefault 的默认返回值而不保存它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190648/

相关文章:

xcode - 给定 XCTest UI 测试中的索引,如何验证 TableView 行内文本的存在?

ios - NSUserDefaults setObject 在线程中崩溃

ios - iPhone 7 NSUserDefaults 变成零

ios - 如何正确配置 UITableView 自定义单元格

iOS 应用内购买 (IAP) 和 "external"服务建议

c# - 使用两个相似的 Collection View 单元格,从而避免代码重复

ios - UIWebview 双击选择文本

swift - Realm 对象谓词搜索无效

ios - 如何保护 NSUserDefaults 上的整数数据免遭黑客攻击?

javascript - 使用 AngularJS 在 Cordova 上失去焦点()