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

问题描述

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

解决方案

ref: NSUserdefault对象类型

Swift 3 及以上

商店

UserDefaults.standard.set(true, forKey: "Key")//BoolUserDefaults.standard.set(1, forKey: "Key")//整数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)}

Swift 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 在所有其他有效位置查找值后,它将查找已注册的默认值,使它们用作后备"值.注册的默认值永远不会在应用程序运行之间存储,并且仅对注册它们的应用程序可见.

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

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

struct DetectLaunch {static let keyforLaunch = "validateFirstlunch"静态变量 isFirst: Bool {得到 {返回 UserDefaults.standard.bool(forKey: keyforLaunch)}放 {UserDefaults.standard.set(newValue, forKey: keyforLaunch)}}}

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

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

删除应用终止时的值:

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

并检查条件为

if DetectLaunch.isFirst {//应用从第一个启动}

UserDefaults 套件名称

另一个属性套件名称,主要用于应用组概念,我从这里 获取的示例场景:>

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

let user = UserDefaults(suiteName:"User")

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

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

解决方案

ref: NSUserdefault objectTypes

Swift 3 and above

Store

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

Retrieve

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

Remove

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

Remove all Keys

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

Swift 2 and below

Store

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

Retrieve

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

Remove

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


Register

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
    ])

remove the value on app termination:

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

}

and check the condition as

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


UserDefaults suite name

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

let user = UserDefaults(suiteName:"User")

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

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

05-27 20:20