swift 歸檔數(shù)據(jù)持久化

數(shù)據(jù)持久化代碼如下:

//

//? ViewController.swift

//? 歸檔解檔

//

//? Created by Mac on 2022/3/23.

//

importUIKit

class ViewController: UIViewController {


? ? override func viewDidLoad() {

? ? ? ? super.viewDidLoad()

? ? ? ? self.saveData()

? ? ? ? self.loadData()

? ? }


? ? @discardableResult

? ? //解檔 反歸檔

? ? funcloadData() ->UserAccount{

? ? ? ? varfirstUserAccount =UserAccount()

? ? ? ? letfullPath =getPath().appendingPathComponent("meals")

? ? ? ? ifletnsData =NSData(contentsOf: fullPath) {

? ? ? ? ? ? do{

? ? ? ? ? ? ? ? letdata =Data(referencing:nsData)

? ? ? ? ? ? ? ? firstUserAccount =tryNSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)as!UserAccount

? ? ? ? ? ? ? ? print("name:\(String(describing: firstUserAccount.name))")

? ? ? ? ? ? ? ? print("age:\(String(describing: firstUserAccount.age))")

? ? ? ? ? ? ? ? print("sex:\(String(describing: firstUserAccount.sex))")

? ? ? ? ? ? ? ? returnfirstUserAccount

? ? ? ? ? ? }catch{

? ? ? ? ? ? ? ? print("Couldn't read file.")

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? returnfirstUserAccount

? ? }


? ? //歸檔

? ? funcsaveData() {

? ? ? ? letuserModel =UserAccount()

? ? ? ? userModel.name="good morning"

? ? ? ? userModel.age="30"

? ? ? ? userModel.sex="女"

? ? ? ? letfullPath =getPath().appendingPathComponent("meals")

? ? ? ? do{

? ? ? ? ? ? let data = try NSKeyedArchiver.archivedData(withRootObject: userModel, requiringSecureCoding: false)

? ? ? ? ? ? ? ? trydata.write(to: fullPath)

? ? ? ? ? ? ? ? print("輸出data:\(data)")

? ? ? ? ? ? }catch{

? ? ? ? ? ? ? ? print("faile to saveData ..............")

? ? ? ? ? ? }

? ? ? ? }


? ? funcgetPath() ->URL{

? ? ? ? let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)

? ? ? ? returnpaths[0]

? ? }

}

classUserAccount: NSObject,NSCoding{


? ? varname:String?

? ? varage:String?

? ? varsex:String?


? ? override init() {

? ? ? ? super.init()

? ? }


? ? //編碼 歸檔

? ? funcencode(withcoder:NSCoder) {

? ? ? ? coder.encode(self.name,forKey:"name")

? ? ? ? coder.encode(self.age,forKey:"age")

? ? ? ? coder.encode(self.sex,forKey:"sex")

? ? }


? ? //解碼 返歸檔

? ? requiredinit?(coderasCoder:NSCoder) {

? ? ? ? self.name= asCoder.decodeObject(forKey:"name")as?String

? ? ? ? self.age= asCoder.decodeObject(forKey:"age")as?String

? ? ? ? self.sex= asCoder.decodeObject(forKey:"sex")as?String

? ? }


}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容