沙盒:IOS應(yīng)用中每個(gè)應(yīng)用均有自己沙盒,用來儲(chǔ)存APP自己的數(shù)據(jù),每個(gè)應(yīng)用的沙盒均是應(yīng)用特有的不能交叉訪問悍及。
沙盒中有三個(gè)文件夾:document,library接癌,temp
(1)document:保存應(yīng)用運(yùn)行時(shí)生成重要的數(shù)據(jù)心赶,Itunes也會(huì)同步到進(jìn)行備份數(shù)據(jù)。一般儲(chǔ)存比較重要數(shù)據(jù)(數(shù)據(jù)使用手機(jī)連接mac可以在itunes中進(jìn)行查看)
NSString *path = NSHomeDirectory();
NSString *docPath = [path stringByAppendingString:@"/saveMessage"];
NSString *docPath1 = [path stringByAppendingPathComponent:@"saveMessage"];
NSString *docPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
//對(duì)于數(shù)據(jù)相關(guān)的path 進(jìn)行操作缺猛,判斷其是否存在缨叫,如果存在就可以進(jìn)行相關(guān)操作
NSFileManager *fileManger = [NSFileManager defaultManager];
NSArray *pathLists = [fileManger contentsOfDirectoryAtPath:path error:nil];
BOOL flag = [fileManger fileExistsAtPath:docPath1];
[fileManger removeItemAtPath:docPath1 error:nil];
(2)temp:保存運(yùn)行時(shí)需要的臨時(shí)數(shù)據(jù),當(dāng)APP結(jié)束后就會(huì)清楚其中的數(shù)據(jù)荔燎。當(dāng)APP沒有運(yùn)行時(shí)其中數(shù)據(jù)也可能被刪除
NSString *temp =? NSTemporaryDirectory();
(3)library:其中有兩個(gè)文件caches和preference耻姥。caches中存放臨時(shí)程序運(yùn)行時(shí)臨時(shí)數(shù)據(jù),就像我們?cè)诿總€(gè)APP中的緩存可以進(jìn)行清除有咨。preference中存放我們自己設(shè)置是plist文件存放地址
NSString *library = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)lastObject];
NSString *chches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
訪問上面三個(gè)文件夾方法(參考鏈接)
上述是關(guān)于在IOS儲(chǔ)存數(shù)據(jù)是具體儲(chǔ)存位置和其獲取的方法琐簇,過程大同小異。但是在儲(chǔ)存數(shù)據(jù)是我們要注意細(xì)節(jié):比如是使用NSSarry是我們需要儲(chǔ)存array數(shù)據(jù)摔吏,如果是其他數(shù)據(jù)例如NSdata需要將其轉(zhuǎn)化
NSArray *arr1 = [[NSArray alloc]initWithObjects:@"0",@"5",nil];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr1];
除沙盒外IOS還向我們提供其他的儲(chǔ)存方式:Sqlite鸽嫂,Core data, NSKeyedArchiver(coding)歸檔,NSUserDefaults
(1)Sqlite:iOS自帶數(shù)據(jù)庫征讲,可以保存數(shù)據(jù)
使用的第三方的庫FMDB
(2)Core data:是蘋果提出的基于sqlite儲(chǔ)存數(shù)據(jù)的結(jié)構(gòu)据某,實(shí)際是sqlite只不過對(duì)其進(jìn)行簡(jiǎn)化
(3)NSkeyedArchiver(coding):
(4)NSUserDefaults:就是我們上述所說的放在library/preference中的偏好設(shè)置,實(shí)際是存放在plist文件中诗箍。存儲(chǔ)數(shù)據(jù)類型是NSString,NSData,NSInteger,NSDictionary,NSArray,NSNumber,bool和其他的基本數(shù)據(jù)類型(但是NSUserDefaults有個(gè)缺點(diǎn):在儲(chǔ)存過程中可能由于時(shí)間問題結(jié)束存儲(chǔ)癣籽,而且如果修改其中一項(xiàng)數(shù)據(jù)整個(gè)數(shù)據(jù)都要重新加載)
官方文檔:The NSUserDefaults class provides convenience methods for accessing common types such as floats, doubles, integers, Booleans, and URLs. A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData.
文章是對(duì)于數(shù)據(jù)儲(chǔ)存初次探究,后面會(huì)對(duì)文章進(jìn)行修改有詳細(xì)的使用方法和具體官方文檔補(bǔ)充