Mit*_*ran 100 nsuserdefaults ios swift userdefaults
如何使用UserDefaults在Swift中保存/检索字符串,布尔值和其他数据?
Anb*_*hik 292
商店
UserDefaults.standard.set(true, forKey: "Key") //Bool
UserDefaults.standard.set(1, forKey: "Key") //Integer
UserDefaults.standard.set("TEST", forKey: "Key") //setObject
Run Code Online (Sandbox Code Playgroud)
取回
UserDefaults.standard.bool(forKey: "Key")
UserDefaults.standard.integer(forKey: "Key")
UserDefaults.standard.string(forKey: "Key")
Run Code Online (Sandbox Code Playgroud)
去掉
UserDefaults.standard.removeObject(forKey: "Key")
Run Code Online (Sandbox Code Playgroud)
删除所有密钥
if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
}
Run Code Online (Sandbox Code Playgroud)
商店
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "yourkey")
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)
取回
var returnValue: [NSString]? = NSUserDefaults.standardUserDefaults().objectForKey("yourkey") as? [NSString]
Run Code Online (Sandbox Code Playgroud)
去掉
NSUserDefaults.standardUserDefaults().removeObjectForKey("yourkey")
Run Code Online (Sandbox Code Playgroud)
另一个属性套件名称,主要用于 App Groups概念,我从这里采取的示例场景:
用例是我想将UserDefaults(不同的业务逻辑可能要求Userdefaults单独分组)与Android的SharedPreferences之类的标识符分开.例如,当我的应用程序中的用户点击注销按钮时,我想清除他的帐户相关默认值,但不清除设备的位置.
struct DetectLaunch {
static let keyforLaunch = "validateFirstlunch"
static var isFirst: Bool {
get {
return UserDefaults.standard.bool(forKey: keyforLaunch)
}
set {
UserDefaults.standard.set(newValue, forKey: keyforLaunch)
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用userDefaults同步,详细信息已添加到重复的答案中.
iSr*_*n27 29
使用UserDefaults的最佳方式
脚步
样品
extension UserDefaults{
//MARK: Check Login
func setLoggedIn(value: Bool) {
set(value, forKey: UserDefaultsKeys.isLoggedIn.rawValue)
//synchronize()
}
func isLoggedIn()-> Bool {
return bool(forKey: UserDefaultsKeys.isLoggedIn.rawValue)
}
//MARK: Save User Data
func setUserID(value: Int){
set(value, forKey: UserDefaultsKeys.userID.rawValue)
//synchronize()
}
//MARK: Retrieve User Data
func getUserID() -> Int{
return integer(forKey: UserDefaultsKeys.userID.rawValue)
}
}
Run Code Online (Sandbox Code Playgroud)
用于存储数据的密钥的枚举
enum UserDefaultsKeys : String {
case isLoggedIn
case userID
}
Run Code Online (Sandbox Code Playgroud)
在UserDefaults中保存所需的位置
UserDefaults.standard.setLoggedIn(value: true) // String
UserDefaults.standard.setUserID(value: result.User.id!) // String
Run Code Online (Sandbox Code Playgroud)
在app中的任何位置检索数据
print("ID : \(UserDefaults.standard.getUserID())")
UserDefaults.standard.getUserID()
Run Code Online (Sandbox Code Playgroud)
删除值
UserDefaults.standard.removeObject(forKey: UserDefaultsKeys.userID)
Run Code Online (Sandbox Code Playgroud)
这样您就可以最佳地存储原始数据
更新 您不需要使用synchronize()来存储值.由于@Moritz指出它没有必要,并给出了关于它的文章.检查评论更多细节
小智 12
斯威夫特4:
商店
UserDefaults.standard.set(object/value, forKey: "key_name")
Run Code Online (Sandbox Code Playgroud)
Retrive
var returnValue: [datatype]? = UserDefaults.standard.object(forKey: "key_name") as? [datatype]
Run Code Online (Sandbox Code Playgroud)
去掉
UserDefaults.standard.removeObject(forKey:"key_name")
Run Code Online (Sandbox Code Playgroud)
UserDefault+Helper.swift
import UIKit
private enum Defaults: String {
case countryCode = "countryCode"
case userloginId = "userloginid"
}
final class UserDefaultHelper {
static var countryCode: String? {
set{
_set(value: newValue, key: .countryCode)
} get {
return _get(valueForKay: .countryCode) as? String ?? ""
}
}
static var userloginId: String? {
set{
_set(value: newValue, key: .userloginId)
} get {
return _get(valueForKay: .userloginId) as? String ?? ""
}
}
private static func _set(value: Any?, key: Defaults) {
UserDefaults.standard.set(value, forKey: key.rawValue)
}
private static func _get(valueForKay key: Defaults)-> Any? {
return UserDefaults.standard.value(forKey: key.rawValue)
}
static func deleteCountryCode() {
UserDefaults.standard.removeObject(forKey: Defaults.countryCode.rawValue)
}
static func deleteUserLoginId() {
UserDefaults.standard.removeObject(forKey: Defaults.userloginId.rawValue)
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
保存价值:
UserDefaultHelper.userloginId = data["user_id"] as? String
Run Code Online (Sandbox Code Playgroud)
获取值:
let userloginid = UserDefaultHelper.userloginId
Run Code Online (Sandbox Code Playgroud)
删除值:
UserDefaultHelper.deleteUserLoginId()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112958 次 |
| 最近记录: |