如何在Swift中使用UserDefaults?

发布于 2021-01-31 23:57:05

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

关注者
0
被浏览
469
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    参考:NSUserdefault objectTypes

    Swift 3及以上

    商店

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

    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"
    static var isFirst: Bool {
        get {
            return UserDefaults.standard.bool(forKey: keyforLaunch)
        }
        set {
            UserDefaults.standard.set(newValue, forKey: keyforLaunch)
        }
    }
    }
    

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

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

    删除应用终止时的价值:

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

    并检查条件为

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

    UserDefaults套件名称

    另一个属性套件名称,主要用于“
    应用程序组”概念
    ,这是我从此处获取的示例方案:

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

    let user = UserDefaults(suiteName:"User")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看