如何在Swift中使用UserDefaults保存/检索字符串,布尔值和其他数据?
参考: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) }
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:将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分别分组),就像Android的SharedPreferences一样。例如,当我的应用程序中的用户单击注销按钮时,我想清除与他的帐户相关的默认设置,而不是设备的位置。
let user = UserDefaults(suiteName:"User")