参考: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 套件名称
另一个属性suite name,主要用于App Groups concept,我取自here的示例场景:
用例是我想用一个标识符来分隔我的 UserDefaults(不同的业务逻辑可能需要 Userdefaults 单独分组),就像 Android 的 SharedPreferences 一样。例如,当我的应用程序中的用户单击注销按钮时,我想清除他的帐户相关默认值,而不是设备的位置。
let user = UserDefaults(suiteName:"User")
use of userDefaults synchronize,详细信息已添加到重复答案中。