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程式預設情況下只能訪問程式自己的目錄,這個目...