iOS 資料儲存

2021-07-22 08:07:31 字數 4071 閱讀 4545

ios應用資料儲存常用方式:

1>plist檔案儲存

2>nsuserdefault(設定儲存)

3>sqlite3

4>core data

plist檔案儲存是將nsstring,nsarray,nsdictionary,nsnumber等型別寫到檔案中

將字典寫入檔案中

nsdictionary *plistdic = @;

[plistdic writetofile:path atomically:yes];

從檔案中讀取資料

//獲取plist檔案路徑

nsstring *path = [[nsbundle mainbundle] pathforresource:@"***.plist" oftype:nil];

nsdictionary *plist = [[nsdictionary alloc] initwithcontentsoffile:path];

nsuserdefault主要用來儲存一些小資料,比如:使用者的偏好設定,使用者名稱密碼等

簡單資料的讀取

//寫入資料

[[nsuserdefaults standarduserdefaults] setobject:@"kkk" forkey:@"username"];

[[nsuserdefaults standarduserdefaults] setobject:@"yes" forkey:@"isopen"];

//讀取資料

[[nsuserdefaults standarduserdefaults] objectforkey:@"username"];

[[nsuserdefaults standarduserdefaults] objectforkey:@"isopen"];

物件的讀取

如果物件是nsstring,nsdictionary,nsarray,nsnumber等型別,可以直接使用nskeyedarchiver進行歸檔 讀檔

自定義的物件型別需要遵守nscoding協議次才可以使用nskeyedarchiver歸檔

nscoding協議必須實現的兩個協議方法:

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

- (nullable instancetype)initwithcoder:(nscoder *)adecoder;

自定義物件實現nscoding協議:

singleton.h

@inte***ce

singleton : nsobject

@property (nonatomic ,copy) nsstring *name;

@property (nonatomic ,copy) nsstring *age;

+ (instancetype)sharedinstance;

@end

singleton.m

#import "singleton.h"

@inte***ce

singleton ()

@end

@implementation

singleton

//單例

+ (instancetype)sharedinstance

+ (instancetype)allocwithzone:(struct _nszone *)zone);

return singleton;

}//nscoding協議

- (instancetype)initwithcoder:(nscoder *)adecoder

return

self;

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

@end

使用nskeyedarchiver 和 nskeyedunarchiver歸檔 讀檔

//寫入物件

singleton *singleton = [singleton sharedinstance];

singleton.age = @"22";

singleton.name = @"kkk";

nsdata *data = [nskeyedarchiver archiveddatawithrootobject:singleton];

[[nsuserdefaults standarduserdefaults] setobject:data forkey:@"singleton"];

//讀取物件

nsdata *data = [[nsuserdefaults standarduserdefaults] objectforkey:@"singleton"];

singleton *singleton = [nskeyedunarchiver unarchiveobjectwithdata:data];

nslog(@"%@",singleton.age);

fmdb三個主要的類:

1>fmdatabase

乙個fmdatabase物件就是乙個單獨的資料庫

2>fmresultset

查詢的結果集

3>fmdatabasequeue

用於多執行緒中執行多個sql語句

運算元據庫主要有三步:

1.開啟資料庫

//獲取應用程式沙盒document的路徑

nsstring *path = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) firstobject];

//拼接完整的資料庫路徑

//database存在 返回 不存在建立

_database = [fmdatabase databasewithpath:filepath];

if (![_database open]) else

2.運算元據庫

建立一張user表,插入一條資料

//建立表

/* sqlite資料庫資料型別:null,值null

integer,值整形

real,值浮點型值

text,值文字字串

blob,值資料塊,完全按照輸入存放

sqlite沒有單獨的布林儲存型別,使用integer作為儲存型別,0為false,1為true

*/nsstring *createsql = @"create table user(name text,age interger,*** interger)";

bool createres = [_database executeupdate:createsql];

if (!createres) else

[_database executeupdate:@"insert into user(name ,age ,***) values(?,?,?)",@"kkk",[nsnumber numberwithinteger:22],[nsnumber numberwithinteger:1]];

從資料庫中查詢資料

fmresultset *result = [self.database executequery:@"select * from user"];

//遍歷結果集result

while ([result next])

使用fmdatabasequeue運算元據庫 ,執行緒更安全

fmdatabasequeue *queue = [fmdatabasequeue databasequeuewithpath:apath];

[queue indatabase:^(fmdatabase *db)

}];

3.切記:資料庫操作完成之後要關閉資料庫

//關閉資料庫

[_database close];

《未完待續。。。>

iOS資料儲存

預設情況下,每個沙盒含有3個資料夾 documents,library和tmp.由於受沙盒機制的限制,應用只能在這幾個目錄下讀寫檔案 在itunes與iphone同步時,會備份所有的dcuments和library目錄,並且當iphone在重啟時,會丟棄所有的tmp檔案。documents 蘋果建議...

iOS 資料儲存

1 plsit屬性列表 1 適用物件 僅僅是foundation框架中自帶的一些類,比如 nsstring nsarray nsdicionary nsset nsnumber nsdata 2 呼叫物件的writetofile.方法就可以寫入檔案 3 呼叫物件的.withcontentsoffil...

ios 資料儲存方式

今天發現一篇好文章,忍不住收藏下來 所謂的持久化,就是將資料儲存到硬碟中,使得在應用程式或機器重啟後可以繼續訪問之前儲存的資料。在ios開發中,有很多資料持久化的方案,接下來我將嘗試著介紹一下5種方案 在介紹各種儲存方法之前,有必要說明以下沙盒機制。ios程式預設情況下只能訪問程式自己的目錄,這個目...