iOS應(yīng)用數(shù)據(jù)存儲的常用方式
- XML屬性列表(plist)歸檔
- Preference(偏好設(shè)置)
- NSKeyedArchiver歸檔(NSCoding)
- SQLite3
- Core Data
應(yīng)用沙盒
每個iOS應(yīng)用都有自己的應(yīng)用沙盒(應(yīng)用沙盒就是文件系統(tǒng)目錄),與其他文件系統(tǒng)隔離。應(yīng)用必須待在自己的沙盒里凯傲,其他應(yīng)用不能訪問該沙盒
模擬器應(yīng)用沙盒的根路徑在: (apple是用戶名, 8.0是模擬器版本)
/Users/apple/Library/Application Support/iPhone Simulator/8.0/Applications
沙盒文件夾的各自作用
Documents:保存應(yīng)用運行時生成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時會備份該目錄稀轨。例如,游戲應(yīng)用可將游戲存檔保存在該目錄
tmp:保存應(yīng)用運行時所需的臨時數(shù)據(jù)岸军,使用完畢后再將相應(yīng)的文件從該目錄刪除奋刽。應(yīng)用沒有運行時瓦侮,系統(tǒng)也可能會清除該目錄下的文件。iTunes同步設(shè)備時不會備份該目錄
Library/Caches:保存應(yīng)用運行時生成的需要持久化的數(shù)據(jù)佣谐,iTunes同步設(shè)備時不會備份該目錄肚吏。一般存儲體積大、不需要備份的非重要數(shù)據(jù)
Library/Preference:保存應(yīng)用的所有偏好設(shè)置狭魂,iOS的Settings(設(shè)置)應(yīng)用會在該目錄中查找應(yīng)用的設(shè)置信息罚攀。iTunes同步設(shè)備時會備份該目錄
應(yīng)用沙盒目錄的常見獲取方式
-
沙盒根目錄:
NSString *home = NSHomeDirectory();
- Documents:
- 利用沙盒根目錄拼接”Documents”字符串
// 不建議采用,因為新版本的操作系統(tǒng)可能會修改目錄名
NSString *home = NSHomeDirectory();
NSString *documents = [home stringByAppendingPathComponent:@"Documents"];
- 利用NSSearchPathForDirectoriesInDomains函數(shù)
// NSUserDomainMask 代表從用戶文件夾下找
// YES 代表展開路徑中的波浪字符“~”
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// 在iOS中雌澄,只有一個目錄跟傳入的參數(shù)匹配斋泄,所以這個集合里面只有一個元素
NSString *documents = [array objectAtIndex:0];
-
tmp:
NSString *tmp = NSTemporaryDirectory();
- Library/Caches:(跟Documents類似的2種方法)
- 利用沙盒根目錄拼接”Caches”字符串
- 利用NSSearchPathForDirectoriesInDomains函數(shù)(將函數(shù)的第2個參數(shù)改為:NSCachesDirectory即可)
- Library/Preference:通過NSUserDefaults類存取該目錄下的設(shè)置信息