歸檔四一種很常見的檔案儲存方法,幾乎任何型別的物件都能夠被歸檔儲存(實際上是一種檔案儲存形式)。
使用nskeyedarichiver進行歸檔,用nskeyedunarichiver進行解歸檔。這種方式會在寫入、讀出資料之前堆資料進行序列化、反序列化操作。
一,簡單歸檔 archiverootobject
(1),歸檔
nsstring *homedictionary = nshomedirectory();
//獲取根目錄
];//新增儲存的檔名
bool
flag = [nskeyedarchiver archiverootobject:@」歸檔測試」 tofile:homepath];
//歸檔乙個字串
(2),解歸檔
[nskeyedunarchiver unarchiveobjectwithfile:homepath] ;
缺點:只能把乙個物件歸檔進乙個檔案中。
二,歸檔多個物件
舉例:歸檔cgpoint點、字串和整數,使用encode方法進行,最後再寫入檔案;
(1),歸檔
//歸檔資料
cgpoint point = cgpointmake(320.0, 480.0);
nsstring *info = @"歸檔測試"
; nsinteger value = 1000;
];
nsmutabledata *data = [[nsmutabledata alloc]init];
nskeyedarchiver *archvier = [[nskeyedarchiver alloc]initforwritingwithmutabledata:data];
//對多個物件進行歸檔
[archvier encodecgpoint:point forkey:@"kpoint"
];
[archvier encodeobject:info forkey:@"kinfo"
];
[archvier encodeinteger:value forkey:@"kvalue"
];
[archvier finishencoding];
[data writetofile:multihomepath atomically:yes];
(2),解歸檔
nsmutabledata *datar = [[nsmutabledata alloc]initwithcontentsoffile:multihomepath];
nskeyedunarchiver *unarchiver = [[nskeyedunarchiver alloc]initforreadingwithdata:dater];
cgpoint pointr = [unarchiver decodecgpointforkey:@"kpoint"
];
nsstring *infor = [unarchiver decodeobjectforkey:@"kinfo"
];
nsinteger valuer = [unarchiver decodeintegerforkey:@"kvalue"
];
[unarchiver finishdecoding];
nslog(@"%f,%f,%@,%d"
,pointr.x,pointr.y,infor,valuer);
限制:歸檔的都是一些基本資料型別。
iOS 使用plist和歸檔儲存資料
1使用plist檔案儲存資料 首先要知道的是,使用plist儲存資料,只能儲存oc自帶的資料字典和陣列,無法儲存自定義的資料model,例子看info.plist的樣式就知道了 將資料儲存到plist檔案中 獲取本地沙盒路徑 nsarray path nssearchpathfordirectori...
iOS 資料儲存 02歸檔多個物件
1 nsdata 1.介紹 使用archiverootobject tofile 方法可以將乙個物件直接寫入到乙個檔案中,但有時候可能想將多個物件寫入到同乙個檔案中,那麼就要使用 nsdata 來進行歸檔物件 nsdata 可以為一些資料提供臨時儲存空間,以便隨後寫入檔案,或者存放從磁碟讀取的檔案內...
iOS資料持久化,寫入,歸檔和反歸檔
資料夾裡寫入字串 nsstring guyu 宇 guyu writetofile guyustr atomically yes encoding nsutf8stringencoding error nil nslog guyustr 把陣列,字典寫入到本地 nsarray sandbox 1 2...