如何在 Swift 中使用 UserDefaults?

编程入门 行业动态 更新时间:2024-10-15 10:12:42
本文介绍了如何在 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

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

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 :

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

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

更多推荐

如何在 Swift 中使用 UserDefaults?

本文发布于:2023-11-26 22:01:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1635371.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何在   Swift   UserDefaults

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!