資料儲存之歸檔 NSCoding協議

2021-07-24 20:38:22 字數 2547 閱讀 7051

資料儲存之nsuserdefaults

語言範疇:objective-c、swift

用途 : 資料儲存

歸檔:資料儲存之nsuserdefaults有乙個致命的缺陷,只能儲存常用的型別。歸檔可以實現把自定義的物件存放在檔案中

一、objective-c

1.新建物件,繼承nsobject

2.如果想將乙個自定義物件儲存到檔案中必須實現nscoding協議

@inte***ce

person : nsobject

3.新增物件屬性

#import 

// 如果想將乙個自定義物件儲存到檔案中必須實現nscoding協議

@inte***ce

person : nsobject

@property(nonatomic,copy)nsstring *name;

@property(nonatomic,assign)nsinteger age;

@property(nonatomic,assign)double height;

@end

4.實現協議nscoding的兩個方法

// 當將乙個自定義物件儲存到檔案的時候就會呼叫該方法

-(void)encodewithcoder:(nscoder *)acoder

// 當從檔案中讀取乙個物件的時候就會呼叫該方法

-(instancetype)initwithcoder:(nscoder *)adecoder

return

self;

}

5.建立物件,儲存物件資料

6.建立乙個路徑

nsstring *docpath=[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)lastobject];

35

7.將自定義的物件儲存到檔案中

[nskeyedarchiver archiverootobject:p tofile:path]

;

8.讀取資料

//讀取資料

//1.獲取檔案路徑

nsstring *path1=[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)lastobject];

nslog(@"path=%@",strppath1);

//2.從檔案中讀取物件

person *man=[nskeyedunarchiver unarchiveobjectwithfile:path];

nslog(@"%@,%ld,%.1f",man.name,(long)man.age,man.height);

9.前往資料夾

10.log資訊

2016-11-23

22:42:57.061 archive[1860:36739] 歸檔方法

2016-11-23

2016-11-23

22:42:57.062 archive[1860:36739] xoxo_x@126

.com,23,1.7

二、swift

import uikit

class person: nsobject,nscoding

// mark:- 處理需要解檔的字段

required init(coder adecoder:nscoder)

override init()

}

class viewcontroller: uiviewcontroller 

override func didreceivememorywarning()

}

/users/xoxo_x/library/developer/coresimulator/devices/ac8dd649-

0ca3-

4480

-9c19-

-4a55-a05d

-eea023ecf836/documents/person.xoxo

%@,%ld,%

.1f optional("[email protected]") optional(17) optional(1.7)

NSCoding歸檔資料持久化儲存

淺拷貝,是物件拷貝的預設的方式。但是,有時候,我們想能夠拷貝乙份值一樣,但是互不影響的物件。那就要用到深拷貝!深拷貝,就是為原物件拷貝乙份結構和值相同的轉殖物件,原物件與轉殖物件占有不同的兩塊空間。這樣,對原物件的修改不會影響到轉殖物件 反之,亦然 歸檔是指講物件序列化,如此可以將複雜的物件寫入檔案...

資料儲存之(四) 歸檔 反歸檔

nskeyedarchiver 如果物件是 nsstring nsdictionary nsarray nsdata nsnumber 等型別,可以直接用 nskeyedarchiver 進行歸檔和恢復 不是所有的物件都可以直接用這種方法進行歸檔,只有遵守了 nscoding 協議的物件才可以 ns...

資料儲存 歸檔解檔

pragma mark 實現協議方法 1.在 歸檔 的時候呼叫 歸檔 指的就是把物件寫入到檔案的過程 告訴系統,如何對當前物件進行歸檔 寫入檔案 void encodewithcoder nscoder encoder 2.在 反歸檔 的時候呼叫 反歸檔 指的是從檔案中讀取物件的過程 如何將讀取到的...