這裡以person類物件為例 先建立乙個person類
person.h
@inte***ce
person : nsobject
// 注意一定要遵循nscoding協議
///姓名
@property (nonatomic, copy) nsstring *name;
///性別
@property (nonatomic, copy) nsstring *gender;
///年齡
@property (nonatomic, assign) nsinteger age;
@end
person.m
@implementation
person
//歸檔
//將所有的屬性歸檔
- (void)encodewithcoder:(nscoder *)acoder
//解檔(反歸檔)
- (instancetype)initwithcoder:(nscoder *)adecoder
return
self;
}@end
準備好以後進行具體操作:
//1.找尋documents資料夾的目錄
nsstring *documentpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) objectatindex:0];
//2. 建立person物件
person *person = [[person alloc] init];
person.name = @"mbboy";
person.gender = @"男";
person.age = 18;
//3 把這個複雜物件歸檔
建立nsmutabledata 用於建立歸檔工具的
nsmutabledata *data = [nsmutabledata data];
建立歸檔工具
nskeyedarchiver *archiver = [[nskeyedarchiver alloc] initforwritingwithmutabledata:data];
對要歸檔的person物件進行歸檔
[archiver encodeobject:person forkey:@"person"];
結束歸檔
[archiver finishencoding];
//nslog(@"==data = %@==",data);
//4 將歸檔的內容nsmutabledata儲存在本地
[data writetofile:personpath atomically:yes];
nslog(@"%@", personpath);
//1 將要解檔的資料找出
nsdata *resultdata = [nsdata datawithcontentsoffile:personpath];
//2 建立解檔工具
nskeyedunarchiver *unarchiver = [[nskeyedunarchiver alloc] initforreadingwithdata:resultdata];
//3 對person物件進行解檔
person * newperson = [unarchiver decodeobjectforkey:@"person"];
//4 結束解檔
[unarchiver finishdecoding];
nslog(@"person = %@", newperson);
解檔就相當於把資料從本地取出 ios資料初級持久化 儲存複雜物件
1.如何建立資料夾 管理資料夾 需要使用 nsfilemanager 這個單例類 withintermediatedirectories 如果填yes,如果建立的檔案已經存在,可以將其覆蓋,反之檔案建立失敗 bool iscreated nsfilemanager defaultmanager cr...
物件持久化
物件持久化 ifname main read scores pickle 將字典表序列化成字串pickle.dumps 字串變回字典用pickle.loads s import pickle person s pickle.dumps person 序列化 p pickle.loads s 恢復 序...
持久化物件的狀態
站在持久化的角度 hibernate 把物件分為 4種狀態 1 持久化狀態,2 臨時狀態,3 游離狀態,4 刪除狀態.session 的特定方法能使物件從乙個狀態轉換到另乙個狀態.臨時物件 transient 在使用 主鍵的情況下 oid 通常為 null 不處於 session 的快取中 在資料庫...