如何在Swift中使用UserDefaults? [英] How can I use UserDefaults in Swift?

查看:778
本文介绍了如何在Swift中使用UserDefaults?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用UserDefaults在Swift中保存/检索字符串,布尔值和其他数据?

How can I use UserDefaults to save/retrieve strings, booleans and other data in Swift?

推荐答案

参考: NSUserdefault objectTypes

商店

UserDefaults.standard.set(true, forKey: "Key") //Bool
UserDefaults.standard.set(1, forKey: "Key")  //Integer
UserDefaults.standard.set("TEST", forKey: "Key") //setObject

检索

 UserDefaults.standard.bool(forKey: "Key")
 UserDefaults.standard.integer(forKey: "Key")
 UserDefaults.standard.string(forKey: "Key")

删除

 UserDefaults.standard.removeObject(forKey: "Key")

删除所有键

 if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
 }

雨燕2及以下

商店

NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "yourkey")
NSUserDefaults.standardUserDefaults().synchronize()

检索

  var returnValue: [NSString]? = NSUserDefaults.standardUserDefaults().objectForKey("yourkey") as? [NSString]

删除

 NSUserDefaults.standardUserDefaults().removeObjectForKey("yourkey")


注册

registerDefaults:将registrationDictionary添加到每个搜索列表中的最后一项.这意味着在NSUserDefaults在所有其他有效位置中查找值之后,它将查找已注册的默认值,从而使它们可用作后备"值.已注册的默认值永远不会存储在应用程序的运行之间,并且仅对注册它们的应用程序可见.

registerDefaults: adds the registrationDictionary to the last item in every search list. This means that after NSUserDefaults has looked for a value in every other valid location, it will look in registered defaults, making them useful as a "fallback" value. Registered defaults are never stored between runs of an application, and are visible only to the application that registers them.

默认配置文件中的默认值将被自动注册.

Default values from Defaults Configuration Files will automatically be registered.

例如从启动中检测应用程序,创建用于保存启动的结构

for example detect the app from launch , create the struct for save launch

struct DetectLaunch {
static let keyforLaunch = "validateFirstlunch"
static var isFirst: Bool {
    get {
        return UserDefaults.standard.bool(forKey: keyforLaunch)
    }
    set {
        UserDefaults.standard.set(newValue, forKey: keyforLaunch)
    }
}
}

在应用启动时注册默认值:

Register default values on app launch:

UserDefaults.standard.register(defaults: [
        DetectLaunch.isFirst: true
    ])

删除应用终止时的值:

func applicationWillTerminate(_ application: UIApplication) {
    DetectLaunch.isFirst = false

}

并检查条件为

if DetectLaunch.isFirst {
  // app launched from first
}


UserDefaults套件名称

另一个属性套房名称,主要用于 应用组概念 ,这是我从此处拍摄的示例场景:


UserDefaults suite name

another one property suite name, mostly its used for App Groups concept, the example scenario I taken from here :

用例是我想用一个标识符来分隔我的UserDefaults(不同的业务逻辑可能要求Userdefaults分别分组),就像Android的SharedPreferences一样.例如,当我的应用程序中的用户单击注销按钮时,我想清除与他的帐户相关的默认设置,而不是设备的位置.

The use case is that I want to separate my UserDefaults (different business logic may require Userdefaults to be grouped separately) by an identifier just like Android's SharedPreferences. For example, when a user in my app clicks on logout button, I would want to clear his account related defaults but not location of the the device.

let user = UserDefaults(suiteName:"User")

使用userDefaults进行同步 ,详细信息已添加到重复的答案.

use of userDefaults synchronize, the detail info has added in the duplicate answer.

这篇关于如何在Swift中使用UserDefaults?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆