前言:個人覺得開發人員最大的悲哀莫過於懂得使用卻不明白其中的原理.在**之前我覺得還是有必要簡單闡述下相關的一些知識點. 因為文章或深或淺總有適合的人群.若有朋友發現了其中不正確的觀點還望多多指出,不勝感激.
承接上篇部落格我們來看看ios開發中是如何將乙個自定義的物件進行歸檔的
本篇部落格將介紹以下幾個方面的內容
1)普通的單個物件歸檔操作
2)擁有繼承關係的物件歸檔
3)同時將多個物件進行歸檔
1.普通的單個物件歸檔操作
首先我們來看下最簡單的單個物件歸檔操作
1.自定義乙個跟小明一樣有名的類(person)
直接上** :
person.h
1person.m#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
1 #import "控制器**1:歸檔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 -(void控制器**2:解檔)personarchive
1 -(void注: fullpathwithfilename: 方法為便捷獲取路徑方法,**如下)personunarchive
1 -(nsstring *)fullpathwithfilename:(nsstring *)filename依次呼叫我們的歸檔和解檔方法
[self personarchive];//結果如下:歸檔 [self personunarchive];//
解檔
至此我們已經實現了簡單的單個物件的歸檔和解檔操作,下面我們來看下繼承關係下的物件的歸檔解檔操作
2.擁有繼承關係的物件歸檔和解檔
定義乙個student類繼承自person類,**如下
student.h
1student.m#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
1控制器方法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 -(void控制器方法2:解檔)studentarchive
1 -(void依次呼叫上述兩個方法,執行結果如下)studentunarchive
3.同時將多個物件歸檔
演示**如下:
1.歸檔
1 -(void02.解檔:)multiplearchive
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...