Swift歸檔和解檔管理數(shù)據(jù)

示例:創(chuàng)建單例ArchiveTest類使用歸檔浩销、解檔管理用戶信息

存儲(chǔ)和修改自定義對(duì)象的方法

let userinfo = ArchiveTest.shareInstance.usermode ?? UserModel()

userinfo.token = "123"

userinfo.name = "hel"

ArchiveTest.shareInstance.usermode = userinfo

ArchiveTest.shareInstance.saveAccount()

讀取存儲(chǔ)的數(shù)據(jù)

print(ArchiveTest.shareInstance.usermode?.token ?? "","name",ArchiveTest.shareInstance.usermode?.name ?? "")

//123 , hel

完整代碼如下

ArchiveTest:歸解檔管理類

UserMode:自定義遵守NSCoding協(xié)議的數(shù)據(jù)模型類

class?ArchiveTest : NSObject {

? ? //單例

? ? static let shareInstance:ArchiveTest = {

? ? ? ? let?instance = ArchiveTest()

? ? ? ?//過(guò)濾文件是否不存在 ? ? ? ?

? ? ? ?let fileM = FileManager.default ? ? ? ?

? ? ? ?if fileM.fileExists(atPath: instance.filePath) { ? ? ? ? ? ?

? ? ? ? ? ? instance.loadAccount() ? ? ? ?

? ? ? ? }

? ? ? ? return?instance

? ? }()

? ? private override init() {}

? ? var?tem:UserModel?

? ? var?usermode:UserModel? {

? ? ? ? set{

? ? ? ? ? ? tem = newValue

? ? ? ? }

? ? ? ? get{

? ? ? ? ? ? return?tem

? ? ? ? }

? ? }

//懶加載存儲(chǔ)路徑

?lazy?var?filePath : String = {

? ? let?path =? NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask

? ? ? ? ,true).first!?as?NSString

? ? let?filePath = path.appendingPathComponent("test.data")

? ? return?filePath

? }()

//歸檔存儲(chǔ)

func saveAccount() {

? ? do{

? ? ? ? if?let?a = usermode{

? ? ? ? ? ?if #available(iOS 11.0, *) {

? ? ? ? ? ? ? ? let data = try NSKeyedArchiver.archivedData(withRootObject: a, requiringSecureCoding: true)

? ? ? ? ? ? ? ? try?data.write(to:URL(fileURLWithPath:filePath))

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? // Fallback on earlier versions

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? print("usermode為空")

? ? ? ? }

? ? }catch{

? ? ? ? print(error)

? ? }

?}

//解檔獲取

func loadAccount() {

? ? do{

? ? ? ? let data = try Data.init(contentsOf:URL(fileURLWithPath:filePath))

? ? ? ? let model = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? UserModel

? ? ? ? self.usermode = model

? ? }catch{

? ? ? ? print("獲取data數(shù)據(jù)失敗:\(error)")

? ? }

?}

//清除所有歸檔數(shù)據(jù)

func cleanCache() {

? ? self.usermode = UserModel()

? ? saveAccount()

?}

}

class UserModel: NSObject,NSCoding,NSSecureCoding {

? ? static var supportsSecureCoding: Bool {

? ? ? ? return true

? ? }

? ? var?token:String?

? ? var?name:String?

? ? func?encode(with coder:NSCoder) {

? ? ? ? coder.encode(token,forKey:"token")

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

? ? }

? ? required override init() {

? ? ? ? super.init()

? ? }

? ? required init?(coder:NSCoder) {

? ? ? ? token = coder.decodeObject(forKey:"token")?as? String

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

? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載年叮,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者兵琳。
  • 序言:七十年代末乙埃,一起剝皮案震驚了整個(gè)濱河市浸踩,隨后出現(xiàn)的幾起案子肺孵,更是在濱河造成了極大的恐慌惯豆,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跪解,死亡現(xiàn)場(chǎng)離奇詭異炉旷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)叉讥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)窘行,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人图仓,你說(shuō)我怎么就攤上這事罐盔。” “怎么了救崔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵惶看,是天一觀的道長(zhǎng)捏顺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纬黎,這世上最難降的妖魔是什么幅骄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮本今,結(jié)果婚禮上拆座,老公的妹妹穿的比我還像新娘。我一直安慰自己冠息,他們只是感情好挪凑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著逛艰,像睡著了一般躏碳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓮孙,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天唐断,我揣著相機(jī)與錄音,去河邊找鬼杭抠。 笑死脸甘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偏灿。 我是一名探鬼主播丹诀,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翁垂!你這毒婦竟也來(lái)了铆遭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沿猜,失蹤者是張志新(化名)和其女友劉穎枚荣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啼肩,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡橄妆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祈坠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片害碾。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赦拘,靈堂內(nèi)的尸體忽然破棺而出慌随,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布阁猜,位于F島的核電站丸逸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蹦漠。R本人自食惡果不足惜椭员,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一车海、第九天 我趴在偏房一處隱蔽的房頂上張望笛园。 院中可真熱鬧,春花似錦侍芝、人聲如沸研铆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棵红。三九已至,卻和暖如春咧栗,著一層夾襖步出監(jiān)牢的瞬間逆甜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工致板, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留交煞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓斟或,卻偏偏與公主長(zhǎng)得像素征,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萝挤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容