數據本地化:把拿到的數據,存到應用的沙盒裏面[方式1:直接寫入本地 方式2:sqlite(數據庫);CoreData;NSUserDefaultes(屬性列表); (歸結檔不算)]sql
沙盒:每一個iOS應用程序都會爲本身建立一個文件系統目錄(文件夾),這個獨立,封閉,安全的空間叫作沙盒(能夠手動的自動的存入一些的東西)數據庫
獨立:每個應用程序擁有一個應用程序沙盒,不可能出現兩個程序使用一個是沙盒設計模式
封閉:每個沙盒只有本身程序能夠去使用;數組
安全:沙盒有刪除的實效緩存
Documents :安全
1:永遠不會刪除重要的文件放在這裏,iTunes程序備份時同時備份document裏面內容,不要在裏面放太大的文件若是加入了音視頻較大文件審覈時候被拒,只有它在應用程序刪除時候刪除框架
Library:編碼
1 :Caches:緩存文件夾存儲緩存文件iTunes不會備份此目錄(適合存放體積大不重要的數據,一些不須要備份的數據)atom
緩存:當用戶對某一個URL作請求操做的時候,這個URL裏面的東西會保存在主機裏面的某個位置 2:preferences:保存用戶的全部偏好設置,iOS settings(設置)應用會在目錄中查找應用的設置信息,iTunes會自動備份該目錄通常不要在這個文件中建立偏好設置文件,通常使用NSUserDefaults來獲取和設置應用偏好spa
tmp:保存應用運行的臨時數據,使用完成後從該目錄刪除,程序沒有運行時候系統也可能刪除該目錄文件,iTunes不會備份該文件夾文件,iPhone重啓時候該目錄文件也會刪除
如何獲取文件夾的地址:
第一種方式:經過NSSearch搜索文件夾得地址,可是不能獲取tmp文件夾的地址,其餘的均可以獲取到.
第二種方式:首現獲取沙盒主路經的地址,而後拼接上想要去的文件夾的地址
傳值方式: 1 :block 2:代理 3:屬性 4:單例 5:通知中心 6:數據本地化
設計模式(實現方式) 1:單例 2:代理 3:Target-Action
MVC :框架設計方式
存入本地過程 1:找到要存的路徑 2:寫出要存的數據 3:建立新文件 4:存儲數據 //NSDocumentDirectory主要獲取Document文件的地址
//NSUserDomainMask 用戶主目錄
//第三個參數表示 展開"~"的地址 設置爲YES 爲完整的路徑 //NSSearchPathForDirectoriesInDomains獲取的是一個數組,數組只有一個元素,因此直接獲取objectIndex:0
//第一種獲取文件夾地址的方式 NSString*documentPathStr=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)objectAtIndex:0];
// NSLog(@"%@",documentPathStr);
//第二種 獲取documents文件夾的路徑
//第一步:獲取沙盒主路徑地址 NSString*homePathStr=NSHomeDirectory(); NSLog(@"%@",homePathStr);
//第二步:在沙盒的主路徑後面拼接documents拼接出documents文件夾的路徑 NSString*documentPathStr=[homePathStrstringByAppendingPathComponent:@"Library/Caches"]; NSLog(@"%@",documentPathStr);
//獲取tmp文件夾的路徑 NSString*tmpPathStr=NSTemporaryDirectory(); NSLog(@"tmpPathStr====%@",tmpPathStr);
簡單數據本地化: //第1步:我要知道存到哪裏,因此我須要一個文件夾路徑 NSString*documentPathStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];
NSLog(@"%@",documentPathStr);
//第2步:我要知道存什麼:建立一條數據
NSString*name =@"Kevin";
//第3步:我要知道存的東西到底放在哪裏,因此建立一個路徑路徑就是存數據文件 NSString*strPath = [documentPathStrstringByAppendingPathComponent:@"str.txt"]; //atomically:yes 忽然沒電時候保存數據來點繼續保存
//encoding :編碼方式
//第 4 步: 準備好開始寫入
// [str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
//根據imageNamed獲取圖片 會在緩存裏面存一份 下次在獲取同名圖片直接在緩存裏面取
//優勢: 快 只有第一次時候稍微慢一些可是以後再去獲取的話很快
//缺點: 會浪費內存 若是隻是用一次的話這塊內存就廢掉了
//ContentsOfFile: 獲取圖片每次都會根據路徑去拿不會佔用內存,若是隻是用一次的話,推薦用ContentsOfFile;