IOS開發 資料持久化篇之檔案儲存 二

2021-07-09 11:17:37 字數 3591 閱讀 1164

前言:個人覺得開發人員最大的悲哀莫過於懂得使用卻不明白其中的原理.在**之前我覺得還是有必要簡單闡述下相關的一些知識點. 因為文章或深或淺總有適合的人群.若有朋友發現了其中不正確的觀點還望多多指出,不勝感激.

承接上篇部落格我們來看看ios開發中是如何將乙個自定義的物件進行歸檔的

本篇部落格將介紹以下幾個方面的內容

1)普通的單個物件歸檔操作

2)擁有繼承關係的物件歸檔

3)同時將多個物件進行歸檔

1.普通的單個物件歸檔操作

首先我們來看下最簡單的單個物件歸檔操作

1.自定義乙個跟小明一樣有名的類(person)

直接上** :

person.h

1

#import23

@inte***ce person : nsobject45/*

*6* 姓名7*/

8 @property (nonatomic, strong) nsstring *name ;910

/**11* 位址

12*/

13 @property (nonatomic, strong) nsstring *address ;

1415/**

16* 年齡

17*/

18 @property (nonatomic, assign) int

age;

1920

21 -(instancetype)initwithname:(nsstring *)name address:(nsstring *)address age:(int

)age;//初始化方法

2223

@end

person.m

1 #import "

person.h"2

3@implementation person

45 -(instancetype)initwithname:(nsstring *)name address:(nsstring *)address age:(int

)age

11return

self;12}

1314

//告知編譯器,我們需要歸檔當前物件的哪些屬性

15 -(void)encodewithcoder:(nscoder *)acoder

2122

//告知編譯器,解檔時對應的屬性

23 -(instancetype)initwithcoder:(nscoder *)adecoder

3031

//重寫description,方便除錯檢視物件屬性資訊

32 -(nsstring *)description

3536 @end

控制器**1:歸檔

1 -(void

)personarchive

控制器**2:解檔

1 -(void

)personunarchive

注: fullpathwithfilename: 方法為便捷獲取路徑方法,**如下

1 -(nsstring *)fullpathwithfilename:(nsstring *)filename
依次呼叫我們的歸檔和解檔方法

[self personarchive];//

歸檔 [self personunarchive];//

解檔

結果如下:

至此我們已經實現了簡單的單個物件的歸檔和解檔操作,下面我們來看下繼承關係下的物件的歸檔解檔操作

2.擁有繼承關係的物件歸檔和解檔

定義乙個student類繼承自person類,**如下

student.h

1

#import

"person.h"2

3@inte***ce

student : person45

/**6* 學校名稱7*/

8 @property (nonatomic, strong) nsstring *schoolname;

9//快速初始化方法

10 -(instancetype)initwithname:(nsstring *)name address:(nsstring *)address age:(int)age schoolname:(nsstring *)schoolname;

1112

@end

student.m

1

#import

"student.h"2

3@implementation

student

45 -(instancetype)initwithname:(nsstring *)name address:(nsstring *)address age:(int)age schoolname:(nsstring *)schoolname

9return

self;10}

1112

13 -(void)encodewithcoder:(nscoder *)acoder

1920 -(instancetype)initwithcoder:(nscoder *)adecoder

2126

27//

重寫description,方便除錯檢視屬性資訊

28 -(nsstring *)description

35@end

控制器方法1:歸檔

1 -(void

)studentarchive

控制器方法2:解檔

1 -(void

)studentunarchive

依次呼叫上述兩個方法,執行結果如下

3.同時將多個物件歸檔

演示**如下:

1.歸檔

1 -(void

)multiplearchive

02.解檔:

1 -(void

)multipleunarchive

執行結果如下圖:

4.分析與簡單總結

1.將乙個物件歸檔的前提:

遵守nscoding協議

實現兩個方法:

encodewithcoder://指定需要歸檔的屬性

initwithcoder://指定需要解檔的屬性

2.繼承關係的物件歸檔注意:

在實現上述兩個方法的時候記得呼叫其父類的方法

eg:

[super encodewithcoder:acoder];

self = [super initwithcoder:adecoder];

3.多物件歸檔依賴於:nsdata物件

iOS開發 資料持久化 歸檔

在ios開發過程中,很多時候都需要進行一些資料的儲存和讀入,在資料量不大的情況下,使用plist儲存資料是一種很方便的方式,但是plist只能允許儲存一些系統自帶的資料型別,如果需要儲存自定義的資料型別,plist是是用不了的,但是可以使用另外一種資料持久化的方法 物件歸檔。nscoding協議 要...

IOS 檔案讀寫 資料持久化

資料持久化的本質 將資料讀成檔案儲存在本地 沙盒機制 就是系統針對每個應用程式在本地生成的資料夾 名字隨機生成 對於不同的應用程式 不能訪問其他應用程式沙盒的內容 起到保護作用 1 documents 用來儲存長久儲存的資料 b perferences 儲存使用者的偏好設定 比如程式是否是第一次啟動...

iOS 資料持久化之FMDB

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