ios高階
1:資料處理之資料讀寫
1):獲取當前應用程式的沙盒根目錄
nsstring*rootpath = nshomedirectory();
nslog(@"%@",rootpath);
rootpath就是根目錄
然後將列印出來的檔案目錄右鍵單擊選擇services下的reveal in finder
2):documents:儲存持久化檔案資料
library/caches:儲存快取資料
library/preferences:儲存應用的所有偏好設定
tmp:儲存應用執行時所需的臨時資料
3):定位當前應用程式的沙盒根目錄
nsstring*docpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) firstobject];
nslog(@"%@",docpath);
nsstring*libpath = [nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes) firstobject];
nslog(@"libpath is %@",libpath);
nsstring*cachespath = [nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes) firstobject];
nslog(@"cachespath is %@",cachespath);
只能用拼接方法定位
nslog(@"prepath is %@",prepath);
nsstring*tmppath = nstemporarydirectory();
nslog(@"tmppath is %@",tmppath);
4):儲存應用程式的偏好設定的類:nsuserdefaults
nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults] ;
[defaults setobject:@"tang" forkey:@"name"] ;
//同步
[defaults synchronize] ;
nslog(@"%@",[defaults objectforkey:@"name"]);
5):簡單物件的讀寫操作
只有四種簡單的資料型別才能直接寫入進檔案
nsstring nsdictionary nsdata nsarray
第一步:獲取沙盒下資料夾documents的路徑
nsstring*docpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];
第二步:建立需要寫入的檔案路徑
第三步:建立字串物件
nsstring*string = @"is副科級領導蓋房了";
第四步:寫入,四種簡單的資料型別的寫入方法差不多的
[string writetofile:filepath atomically:yesencoding:nsutf8stringencodingerror:nil];
第五步:讀取字串物件
nsstring*resultstr = [nsstringstringwithcontentsoffile:filepath encoding:nsutf8stringencodingerror:nil];
陣列和字典可參照字串物件的寫入讀取方法
*nsdata物件的寫入和讀取(將儲存)
第一步和第二步是一樣的
第三步:uiimage*image = [uiimageimagenamed:@"0"];
第四步:nsdata*data = uiimagepngrepresentation(image);
第五步:寫入
[data writetofile:datapath atomically:yes];
讀取並在模擬器上顯示:
nsdata*resultdata = [nsdatadatawithcontentsoffile:datapath];
uiimage*reimage = [uiimageimagewithdata:resultdata];
uiimageview*imageview = [[uiimageviewalloc] initwithimage:reimage];
imageview.frame= self.view.bounds;
[self.viewaddsubview:imageview];
6):在沙盒目錄下建立檔案
第一步:找到沙盒路徑(caches)
//1.獲取documents目錄
nsstring*docpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];
//2.建立檔案路徑
//3.建立檔案管理物件
nsfilemanager*manager = [nsfilemanagerdefaultmanager];
//4.建立
[manager createfileatpath:filepath contents:[@"sdfasdfs"datausingencoding:nsutf8stringencoding] attributes:nil];
nslog(@"%@",filepath);
//計算檔案或資料夾的大小
nsdictionary*dic = [manager attributesofitematpath:filepath error:nil];
nslog(@"%@",dic);
nsnumber*number = [dic objectforkey:nsfilesize];
nslog(@"%@",number);
7):建立資料夾和建立檔案的核心**差別在:
a:資料夾路徑沒有字尾名,檔案有
b:檔案管理器建立方法的不同
//2.建立資料夾的路徑
//3.建立檔案管理器物件
nsfilemanager*manager = [nsfilemanagerdefaultmanager];
[manager createdirectoryatpath:filepath withintermediatedirectories:yesattributes:nilerror:nil];
/*在documents資料夾下,建立乙個資料夾(path),在該資料夾下建立乙個檔案(test.txt),將乙個物件存入到該檔案中,然後在caches資料夾下建立乙個資料夾名為"testdirectroy",將test.txt檔案複製到這個資料夾下.
*/- (void)movefile
/*練習要求:
在documents目錄下建立乙個檔案text.txt
從檔案的偏移量為3的時候開始追加內容1234
*/- (void)addcontent
//核心**如下
//建立檔案對接物件
nsfilehandle*handle = [nsfilehandlefilehandleforupdatingatpath:filepath];
//此時的檔案對接物件既可以讀也可以寫
//將偏移量移動到3的位置
[handle seektofileoffset:3];
//寫入資料
[handle writedata:[@"1"datausingencoding:nsutf8stringencoding]];
//執行完操作之後不要忘了關閉檔案
[handle closefile];
8):複雜檔案的歸檔和反歸檔(持久化操作)
//歸檔
- (void)archiver
//反歸檔
- (void)unarchiver
//還要建立乙個模型物件person,遵循nscoding協議
實現兩個協議方法:
- (instancetype)initwithname:(nsstring*)name age:(nsstring*)age
returnself;
}- (void)encodewithcoder:(nscoder*)acoder
- (nullableinstancetype)initwithcoder:(nscoder*)adecoder
//4.寫入
uiimage*image = [uiimageimagenamed:@"0"];
nsdata*data = uiimagepngrepresentation(image);
[data writetofile:testpath atomically:yes];
//4.建立檔案對接器
nsfilehandle*handle = [nsfilehandlefilehandleforupdatingatpath:textpath];
//此時檔案在更新狀態下,即可讀也可寫
[handle seektofileoffset:3];
//5.開始在偏移量為3的地方寫入字串
[handle writedata:[@"1234"datausingencoding:nsutf8stringencoding]];
[handle closefile];
nslog(@"%@",textpath);
iOS開發之資料儲存
xml屬性列表 plist 歸檔 preference 偏好設定 本質還是通過 plist 來儲存資料,但是使用更簡單 無需關注檔案 資料夾路徑和名稱 nskeyedarchiver歸檔 nscoding 把任何物件,直接儲存為檔案的方式。sqlite3 當非常大量的資料儲存時使用 core dat...
iOS開發之資料儲存之NSData
1 概述 使用archiverootobject tofile 方法可以將乙個物件直接寫入到乙個檔案中,但有時候可能想將多個物件寫入到同乙個檔案中,那麼就要使用nsdata來進行歸檔物件。nsdata可以為一些資料提供臨時儲存空間,以便隨後寫入檔案,或者存放從磁碟讀取的檔案內容。可以使用 nsmut...
iOS開發之資料儲存之NSData
1 概述 使用archiverootobject tofile 方法可以將乙個物件直接寫入到乙個檔案中,但有時候可能想將多個物件寫入到同乙個檔案中,那麼就要使用nsdata來進行歸檔物件。nsdata可以為一些資料提供臨時儲存空間,以便隨後寫入檔案,或者存放從磁碟讀取的檔案內容。可以使用 nsmut...