7.7 数据存储_UserDefaults

    //--- 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) --")
    }
    
  • 存 对象 : 转成 Data() 二进制:
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 ?? "" )--")
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容