//--- UserDefaults 存储到的就程序的Preference目录;
func yeUserDefaults(){
let eStrKey = "TyeStrKey"
// 0. 获取 存储的 单例对象:
let eUserD = UserDefaults.standard
// 1. 增, 写入:
eUserD.set(35, forKey: eStrKey)
eUserD.synchronize() // 同步方法,立即保存;
// 2. 查, 获取: int 类型 .integer()
var eInt = eUserD.integer(forKey: eStrKey)
print("---获取到的值(对于Int,没有此 key 则返回0): \(eInt) --")
// 3. 改:
eUserD.set(15, forKey: eStrKey)
eUserD.synchronize() // 同步方法,立即保存;
// 4. 删:
eUserD.removeObject(forKey: eStrKey)
eUserD.synchronize() // 同步方法,立即保存;
}
func yeUserDefaults(){
let eUserD = UserDefaults.standard
// 存 数组:
eUserD.set(["Tye","DiTye"], forKey: "TyeArr")
eUserD.synchronize()
print(eUserD.array(forKey: "TyeArr") as! [String])
// 存 字典:
eUserD.set(["Name":"Jerry"], forKey: "TyeDic")
eUserD.synchronize()
print(eUserD.dictionary(forKey: "TyeDic") as! [String : String])
// 删除
eUserD.removeObject(forKey: "TyeDic")
eUserD.synchronize()
//
print(eUserD.dictionary(forKey: "TyeDic") ?? "")
//--- 存 URL:
eUserD.set(URL(string:"http://www.baidu.com")!, forKey: "TyeURL")
eUserD.synchronize()
print(eUserD.url(forKey: "TyeURL")!)
//--- 存 基本类型:
eUserD.set(true, forKey: "TyeBool")
eUserD.synchronize()
print(eUserD.bool(forKey: "TyeBool")) //没有此 key 则返回 false;
//
eUserD.set(78.5, forKey:"TyeFloat")
eUserD.synchronize()
print(eUserD.float(forKey: "TyeFloat"))
//
eUserD.set(3.14159265, forKey: "TyeDouble")
eUserD.synchronize()
print(eUserD.double(forKey: "TyeDouble"))
//
eUserD.set("Tye", forKey: "TyeString")
eUserD.synchronize()
print(eUserD.string(forKey: "TyeString")!)
// 1. 增, 写入:
eUserD.set(35, forKey:"TyeInt")
eUserD.synchronize()
var eInt = eUserD.integer(forKey: "TyeInt")
print("---获取到的值(对于Int,没有此 key 则返回 0): \(eInt) --")
}
import UIKit
class TyeModelObject: NSObject {
var eStrName = ""
var eStrAge = ""
}
// 存 对象, 转成 Data() 二进制:
func yeUserDefaults(){
let eUserD = UserDefaults.standard
//-- 1. 数据模型实体对象:
let eModel = TyeModelObject()
eModel.eStrName = "Tye"
eModel.eStrAge = "15"
if #available(iOS 12.0, *)
{ // iOS 12.0 之后
do
{
//=== 2. 存 对象, 转成 Data() 二进制:
let eData = try NSKeyedArchiver.archivedData(withRootObject: eModel, requiringSecureCoding: true)
eUserD.synchronize()
eUserD.set(eData, forKey: "TyeData")
//=== 3. 查看:
let eDataLS = eUserD.data(forKey: "TyeData")
let eModelLS = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(eDataLS!) as? TyeModelObject
print("---查看获得的数据: \( eModelLS?.eStrName ?? "" )--")
}
catch
{
print("Archive error.")
}
}
else
{
//=== 2. 存 对象, 转成 Data() 二进制:
let eData = NSKeyedArchiver.archivedData(withRootObject: eModel)
eUserD.synchronize()
eUserD.set(eData, forKey: "TyeData")
//=== 3. 查看:
let eDataLS = eUserD.data(forKey: "TyeData")
let eModelLS = NSKeyedUnarchiver.unarchiveObject(with: eDataLS!) as! TyeModelObject
print("---查看获得的数据: \( eModelLS.eStrName ?? "" )--")
}
}
}