一,簡單介紹一下常用的plist文件。
全名是:Property List,屬性列表文件,它是一種用來存儲串行化後的對象的文件。屬性列表文件的擴展名爲.plist ,因此通常被稱爲 plist文件。文件是xml格式的。
Plist文件通常用於儲存用戶設置,也可以用於存儲捆綁的信息
二,先說文件保存到的幾個位置:
1,工程沙盒裏(就是程序user Document文件夾下,以讀取文件,寫入文件方式)
2,工程自身裏(就是在工程裏手動創建一個如.plist文件,把固定的內容寫入,這個需要人工手動寫入)
3,工程沙盒裏(保存到user Document下,不過不需要讀寫文件,用系統的 NSUserDefaults 可以快速保存添加讀取刪除基本數據類型,類似於android裏的Sharedpreferences )
先看截圖吧
控制檯輸出的爲工程下plist文件和沙盒文件的路徑,前綴都是統一的,只是到了程序的文件夾後,一個是appName.app,另一個是Documents下。所以存放位置還是不一樣的。
首先說一下,工程下的.plist是我們不能在代碼中寫入的,可以讀取,但是不可以寫入(目前我是這樣的結論,猜測應該是apple爲了安全限制的),所以,代碼中進行文件寫等操作只能在沙盒路徑下的文件中操作。
(程序常用固定數據,比如離線地圖數據,各城市經緯度信息等需要我們綁定到程序裏(比UserDocument安全),那麼,可以代碼循環寫入,把.plist寫在沙盒內,然後手動copy到工程目錄下,這樣就不用我們手動添加啦)
三,三種方式的讀寫操作。
1-1,創建plist文件。
按command +N快捷鍵創建,或者File —> New —> New File,選擇Resource 下的Property List
1-2,工程路徑plist文件讀取。
//path 讀取當前程序定義好的provinces.plist省份城市文件
NSString *path = [[NSBundle mainBundle] pathForResource:@"provinces" ofType:@"plist"];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfFile:path];
self.provincesContent = [NSArray arrayWithArray:[data objectForKey:@"province"]];//array數組的名稱就叫province
1-3,讀取後賦值給我們相應的數據類型,就可以直接使用了,就是這麼簡單。
2-1,沙盒路徑plist文件的讀取。
- NSArray *patharray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *path = [patharray objectAtIndex:0];
- NSString *filepath=[path stringByAppendingPathComponent:@"provinces.plist"];//添加我們需要的文件全稱
- //獲取此路徑下的我們需要的數據(NSArray,NSDictionary,NSString...)
- NSMutableArray *rootArray = [NSMutableArray arrayWithContentsOfFile:filepath];//注意,如果想添加新的數據,需要NSMutable類型的
3-1,NSUserDefaults快速讀寫,利用系統提供的方法,我們可以快速保存簡單數據類型,如用戶登錄用戶名密碼。
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];//獲取標準函數對象
- NSMutableDictionary *defaultcoordinate = [defaults objectForKey:@"default_coordinate"];//通過對象獲取名稱下NSMutableDictionary數據
- NSString *currentCity = [defaultcoordinate objectForKey:@"c_name"];
- [defaults setObject:@"kaka" forKey:@"newdata"];//添加id對象類型數據
- [defaults objectForKey:@"newdata"];//獲取對象類型數據
- [defaults setDouble:2013 forKey:@"double"];//添加double類型數據
- [defaults doubleForKey:@"double"];//獲取double類型數據
- [defaults setBool:NO forKey:@"BOOL"];//添加BOOL類型數據
- [defaults boolForKey:@"BOOL"];//獲取BOOL類型數據
- [defaults setInteger:12 forKey:@"int"];//添加int類型數據
- [defaults integerForKey:@"int"];//獲取int類型數據
- [defaults setFloat:0.23 forKey:@"float"];//添加Float類型數據
- [defaults floatForKey:@"float"];//獲取float類型數據
- [defaults removeObjectForKey:@"newdata"];//刪除對象數據
3-3,操作之後記得Synchronize同步操作,否則偶然會因爲別的線程佔大量內存而沒有保存成功
- [defaults synchronize];
四,沙盒文件打開的方法:
1,可以通過 系統帶的 終端工具,在bash命令行模式定位到
2,Finder菜單-前往 此時按住鍵盤的:option按鍵,就會顯示出:資源庫,點擊進入