1.
xml屬性列表(plist)歸檔
2.preference(偏好設定)
本質還是通過」plist」檔案來儲存資料,但是使用更簡單(無需關注檔案.資料夾路徑和名稱)
3.nskeyedarchiver歸檔(nscoding)
把任何物件,直接儲存為檔案的方式.
4.sqlite3
當非常大量的資料儲存時使用
5.core data
就是對sqlite的封裝
二.沙盒sandbox
1.每個ios應用dou都有自己的應用沙盒(應用沙盒就是應用的資料夾),與其他系統隔離.應用必須待在自己的沙盒裡,其他應用不能訪問該沙盒.
2.沙盒的結構分析
documents:儲存應用執行時生成的需要持久化的資料.itunes同步裝置時會備份該目錄.
tmp:儲存應用執行時所需的臨時資料,使用完畢後在將相應的檔案從該目錄刪除.應用沒有執行時,系統也可能會清除該目錄下的檔案.
library/caches:儲存應用執行時生成的需要持久化的資料,一般儲存體積大,不需要備份的非重用資料.
libray/preference:儲存應用的所有偏好設定,ios的settings(設定)應用會在該目錄中查詢應用的設定資訊. 該目錄由系統管理.無需我們來管理,通常用來儲存一些基本的軟體配置資訊,比如記住密碼,自動登入.
總結:我們平常運算元據主要使用docunents目錄.
三.應用沙盒目錄的常見的獲取方式
沙盒根目錄: nsstring *home = nshomedirectory();
documents:(2種方式)
◆ 利用沙盒根目錄拼接」documents」字串
◆ 利用nssearchpathfordirectoriesindomains函式
// nsuserdomainmask 代表從使用者資料夾下找
// yes 代表展開路徑中的波浪字元「~」
nsarray *array = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
// 在ios中,只有乙個目錄跟傳入的引數匹配,所以這個集合裡面只有乙個元素
nsstring *documents = [array objectatindex:0];
四.
● tmp:nsstring *tmp = nstemporarydirectory();
●
● library/caches:(跟documents類似的2種方法)
◆ 利用沙盒根目錄拼接」caches」字串
◆ 利用nssearchpathfordirectoriesindomains函式(將函式的第2個引數改為:nscachesdirectory即可)
◆
● library/preference:通過nsuserdefaults類訪問該目錄下的設定資訊
五.屬性列表
屬性列表是一種xml格式的檔案,拓展名為plist
如果物件是: nsstring、nsdictionary、nsarray、nsdata、nsnumber等型別,就可以使用writetofile:atomically:方法直接將物件寫到屬性列表檔案中
2.屬性的列表的歸檔
將乙個nsdictionary物件歸檔到乙個plist屬性列表中
1.將資料封裝中字典
nsmutabledictionary *dict = [nsmutabledictionary dictionary];
[dict setobject:@」母雞」 forkey:@」name」];
[dict setobject:@」15013141314」 forkey:@」phone」];
[dict setobject:@」27」 forkey:@」age」];
2.將字典持久到documents/乙個檔案中
[dict writetofile:path atomically:yes];
讀取屬性列表,恢復nsdictionary物件
//讀取位址 例項化nsdictionary物件
nsdictionary *dict = [nsdictionary dictionarywithcontentsoffile:path];
nslog(@」name:%@」, [dict objectforkey:@」name」]);
nslog(@」phone:%@」, [dict objectforkey:@」phone」]);
nslog(@」age:%@」, [dict objectforkey:@」age」]);
六.偏好設定
很多ios應用程式都支援偏好設定,比如儲存使用者名稱,密碼,字型大小等設定.ios提供了一套標準的解決方案為應用程式加入偏好設定
2. 每個應用都有個nsuserdefaults 例項,通過它訪問偏好設定
比如,儲存使用者名稱.字型大小,是否自動登入
nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];
[defaults setobject:@」 lhh」 forkey:@」username」];
[defaults setfloat:18.0f forkey:@」text_size」];
[defaults setbool:yes forkey:@」auto_login」];
讀取上次儲存的設定 要通過 defults
nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];
nsstring *username = [defaults stringforkey:@」username」];
float textsize = [defaults floatforkey:@」text_size」];
bool autologin = [defaults boolforkey:@」auto_login」];
注意:userdefaults 設定資料時,不是立即寫入,而是根據時間戳定時的把快取中的資料寫入本地磁碟.所以呼叫set方法之後資料有可能還沒有寫入磁碟應用程式就終止了.出現以上問題,可以呼叫synchornize方法強制寫入[defaults synchornice]
七.nskeydarchiver
如果物件是nsstring .nsdictionary.nsarray.nsdata,nsnumerber等型別,可以直接使用nskeydarchiver進行歸檔和恢復.
2.不是所以物件都可以直接用這中方法進行歸檔,只有遵守了nscoding協議的物件才可以
nscoding協議有2個方法:
encodewithcoder:
每次歸檔時,都會呼叫者個方法,一般在這個方法裡面指定了如何歸檔物件中每個例項變數,可以使用 encodeobject:forkey ;方法歸檔例項變數.
initwithcoder:
每次從檔案中恢復(解碼)物件時,都會呼叫這個方法.一般在這個方法裡面指定如何解碼檔案中的資料為物件的例項變數.可以使用decodeobject:forkey方法解碼例項變數.
 nskeyedarchiver-歸檔person物件(person.h)
@inte***ce person : nsobject
@property (nonatomic, copy) nsstring *name;
@property (nonatomic, assign) int age;
@property (nonatomic, assign) float height;
@end
@implementation person
- (void)encodewithcoder:(nscoder *)encoder
- (id)initwithcoder:(nscoder *)decoder
- (void)dealloc
@end
nskeyedarchiver-歸檔person物件(編碼和解碼)
● 歸檔(編碼)
person *person = [[[person alloc] init] autorelease];
person.name = @」mj」;
person.age = 27;
person.height = 1.83f;
[nskeyedarchiver archiverootobject:person tofile:path];
● 恢復(解碼)
person *person = [nskeyedunarchiver unarchiveobjectwithfile:path];
nskeyedarchiver-歸檔物件的注意
● 如果父類也遵守了nscoding協議,請注意:
◆ 應該在encodewithcoder:方法中加上一句
[super encodewithcode:encode];
確保繼承的例項變數也能被編碼,即也能被歸檔
◆ 應該在initwithcoder:方法中加上一句
self = [super initwithcoder:decoder];
確保繼承的例項變數也能被解碼,即也能被恢復
iOS 應用資料儲存的常用方式
os 開發中,經常會有將資料儲存到本地的需求。比如一些資料的快取,或者記錄下使用者的賬號密碼,記錄下下次是否自動登入等,這些都需要將資料記錄到本地。ios中,資料儲存到本地的常見方式有三種 一 使用plist 儲存到本地 二 preference 偏好設定 三 歸檔解檔。舉例介紹一下三種方式。方式一...
iOS本地資料儲存的方式
1 nskeyedarchiver 歸檔 採用歸檔的形式來儲存資料,可以實現對複雜物件的資料儲存,該資料物件需要遵守nscoding協議,並且該物件對應的類必須提供encodewithcoder 和initwithcoder 方法.2 nsuserdefaults 用來儲存應用程式設定和屬性 使用者...
iOS本地資料儲存的方式
ios本地資料儲存有哪幾種方式?1.複雜物件寫入本地nskeyedarchiver 歸檔 採用歸檔的形式來儲存資料,該物件資料需要遵守nscoding協議,並且該物件對應的類必須提供encodewithcoder 和initwithcoder 方法。現在建立乙個boss類,並且.h遵守nscodin...