ios 資料持久化之自定義模型的儲存

2021-07-07 10:01:19 字數 1680 閱讀 9459

開通微博第一天  謝謝支援

資料持久化之nskeyedarchiver

基本的資料型別如

nsstring、nsdictionary、nsarray、nsdata、nsnumber等可以用屬性列表的方法持久化到.plist 檔案中,但如果是一些自定義的類的話,屬性列表的方法就不管用了。archiver 方法可以做到。

如果是自定義的模型,要實現資料持久化,自定義的模型要遵循nscoding  協議。

nscoding 是乙個簡單的協議,有兩個方法: -initwithcoder: 和 encodewithcoder:。遵循nscoding協議的類可以被序列化和反序列化,這樣可以歸檔到磁碟上或分發到網路上

廢話不多說 直接上**

.h檔案

#import

@inte***ce

hfaccount : nsobject

/**string

介面獲取後的

access token。*/

@property

(nonatomic

,copy

) nsstring *access_token;

/**單位是秒數。*/

@property

(nonatomic

,copy

) nsnumber *expires_in;

/**string

當前使用者的

uid。*/

@property

(nonatomic

,copy

) nsstring *uid;

@end

.m檔案

#import

"hfaccount.h"

@implementation

hfaccount

/*** 

當乙個物件要歸檔進沙盒中時,就會呼叫這個方法

*  目的:在這個方法中說明這個物件的哪些屬性要存進沙盒 */

- (void

)encodewithcoder:(

nscoder

*)encoder

/**

*  當從沙盒中解檔乙個物件時(從沙盒中載入乙個物件時),就會呼叫這個方法

*  目的:在這個方法中說明沙盒中的屬性該怎麼解析(需要取出哪些屬性) */

- (id)initwithcoder:(

nscoder

*)decoder

return

self;

} @end

在你需要儲存的地方

hfaccount *account = [[hfaccount alloc]init];

然後給你的模型賦值

// 自定義物件的儲存必須用

nskeyedarchiver

,不再有什麼

writetofile方法

[nskeyedarchiver

archiverootobject

:account

tofile

:hwaccountpath

]; 解檔

// 載入模型

hfaccount

*account = [

nskeyedunarchiver

unarchiveobjectwithfile

:hwaccountpath];

iOS 之自定義view

自定義view的兩種方式 第一種 純手寫 建立 instancetype initwithframe cgrect frame return self 在這裡設定控制項的frame 在改方法中一定要呼叫 super layoutsubviews 方法 主要是設定空間的frame值 加約束 void ...

iOS之自定義控制項

注意 如果使用 方式建立控制項,那麼建立時一定會呼叫initwithframe 方法 如果使用xib stotyboard方式建立控制項,那麼在建立時一定會呼叫initwithcoder 方法 在initwithcoder 裡面訪問屬性,會發現屬性為nil,因為此時自定義好控制項正在初始化,屬性還沒...

iOS 資料持久化之FMDB

新建乙個專案名為qzfmdb,開啟終端 cd users hongde desktop qzfmdb vim podfile鍵盤敲 i 輸入 target qzfmdb dopod jqfmdb end wq 回車鍵 pod install關掉專案 重新開啟qzfmdb.xcworkspace vi...