一般數(shù)據(jù)可以分一下4種:
1,關(guān)鍵數(shù)據(jù)
這些是用戶創(chuàng)建的數(shù)據(jù)彭羹,或其它不能重新生成的數(shù)據(jù)黄伊。應(yīng)該存放在<Application_Home>/Documents目錄下,并且不應(yīng)該標記為"do not backup"屬性派殷。關(guān)鍵數(shù)據(jù)在低存儲空間時也會保留还最,而且會被iCloud或iTunes備份。
2毡惜,緩存數(shù)據(jù)
可以重新下載或生成的數(shù)據(jù)拓轻,而且沒有這些數(shù)據(jù)也不會妨礙用戶離線使用應(yīng)用的功能。緩存數(shù)據(jù)應(yīng)該保存在<Application_Home>/Library/Caches目錄下虱黄。緩存數(shù)據(jù)在設(shè)備低存儲空間時可能會被刪除悦即,iTunes或iCloud不會對其進行備份。
3,臨時數(shù)據(jù)
應(yīng)用需要寫到本地存儲辜梳,內(nèi)部使用的臨時數(shù)據(jù)粱甫,但不需要長期保留使用。臨時數(shù)據(jù)應(yīng)該保存在<Application_Home>/tmp目錄作瞄。系統(tǒng)可能會清空該目錄下的數(shù)據(jù)茶宵,iTunes或iCloud也不會對其進行備份。應(yīng)用在不需要使用這些數(shù)據(jù)時宗挥,應(yīng)該盡快地刪除臨時數(shù)據(jù)乌庶,以避免浪費用戶的存儲空間。
4契耿,離線數(shù)據(jù)
可以下載瞒大,或重新創(chuàng)建,但用戶希望在離線時也能訪問這些數(shù)據(jù)搪桂。離線數(shù)據(jù)應(yīng)該存放在<Application_Home>/Documents目錄或<Application_Home>/Library/Private Documents目錄透敌,并標記為"do not backup"屬性。這兩個位置的數(shù)據(jù)在低存儲空間時都會保留踢械,而"do not backup"屬性會阻止iTunes或iCloud備份酗电。應(yīng)用不再需要離線數(shù)據(jù)文件時,應(yīng)該盡快刪除内列,以避免浪費用戶的存儲空間撵术。
23都比較好理解,但1和4經(jīng)常容易混淆话瞧。
其實關(guān)鍵數(shù)據(jù)和離線數(shù)據(jù)都是比較重要的數(shù)據(jù)嫩与,都是不希望被系統(tǒng)無故清除的數(shù)據(jù)。
但關(guān)鍵數(shù)據(jù)一般是用戶使用APP時產(chǎn)生的數(shù)據(jù)移稳,如用戶的配置信息等蕴纳。無法重新生成。而且關(guān)鍵數(shù)據(jù)一般都比較小个粱。
離線數(shù)據(jù)則是用戶可以重新創(chuàng)建或者可以從網(wǎng)上重新下載的數(shù)據(jù)古毛,離線數(shù)據(jù)一般都比較大。
同時蘋果在數(shù)據(jù)存儲審核這一塊都许,也不允許開發(fā)者將太多太大的文件放到iCloud稻薇。
那么,離線數(shù)據(jù)如何標記“DO NOT BACKUP”呢胶征?
iOS5.1后可以使用如下方法:
- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *) filePathString
{
NSURL* URL= [NSURL fileURLWithPath: filePathString];
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
iOS5.1之前的版本需要使用其他的方法塞椎,但現(xiàn)在應(yīng)該沒什么APP需要支持5.1之前把。
Swift方法或需要支持5.1之前可以參考如下鏈接:
https://developer.apple.com/library/ios/qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342