亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ios開發----應用數據存儲的常用方法之plist存取方法

2019-11-14 18:54:12
字體:
來源:轉載
供稿:網友

  [注意]轉載時請注明出處博客園-吃唐僧肉的小悟空http://www.49028c.com/hukezhu/

 

  ios應用數據存儲的常用方式主要有:

  • xml屬性列表(plist)歸檔
  • PReference(偏好設置)
  • NSKeyedArchiver歸檔(NSCoding)
  • SQLite3
  • Core Data

  

ios應用沙盒機制

  介紹這些方法之前,首先介紹一下應用沙盒的概念.

  ios應用沙盒機制就是指ios應用程序只能在為該程序創建的文件系統中讀取文件,不可以去其它地方訪問,此區域被成為沙盒,所以所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。(ios8之前是這個樣子,iOS8新開放了一種對幾個固定系統區域的擴展機制extension,它可以在一定程度上彌補iOS的沙盒機制對應用間通信的限制).

  應用沙盒機制下,每個應用程序都有自己的存儲空間 ;應用程序不能翻過自己的圍墻去訪問別的存儲空間的內容 ;應用程序請求的數據都要通過權限檢測,假如不符合條件的話,不會被放行。

  應用沙盒的結構主要如下:

 

  Documents:保存應用運行時生成的需要持久化的數據,iTunes同步設備時會備份該目錄。例如,游戲應用可將游戲存檔保存在該目錄

  

  tmp:保存應用運行時所需的臨時數據,使用完畢后再將相應的文件從該目錄刪除。應用沒有運行時,系統也可能會清除該目錄下的文件。iTunes同步設備時不會備份該目錄
 
  Library/Caches:保存應用運行時生成的需要持久化的數據,iTunes同步設備時不會備份該目錄。一般存儲體積大、不需要備份的非重要數據
 
  Library/Preference:保存應用的所有偏好設置,iOS的Settings(設置)應用會在該目錄中查找應用的設置信息。iTunes同步設備時會備份該目錄
 
 
 
 

ios應用沙盒目錄常見獲取方式

  在介紹plist文件存取方式之前,還有一個問題需要提前介紹,一會也需要用到,就是我們怎么獲取用于沙盒的目錄,也有多種方式,
 
  獲取應用沙盒根目錄的方法:
   
//獲取應用沙盒的根目錄NSString *home = NSHomeDirectory();//NSHomeDirectory()是一個c語言的方法

 

  獲取Documents文件路徑的方法:

    • 第一種方法:
      • 首先,獲取應用沙盒的根目錄,再利用字符串的拼接函數,得到Documents目錄 (但是不建議采用這個方法,因為新版本的操作系統可能會修改目錄名)
1     //第一種方法:2     //獲取當前應用沙盒的根目錄3     NSString *homePath = NSHomeDirectory();4     //拼接路徑5     NSString *docPath = [homePath stringByAppendingPathComponent:@"Documents"];  
    • 第二種方法
      • 利用NSSearchPathForDirectoriesInDomains函數獲得Documents目錄
 //第二種方法    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

    這個NSSearchPathForDirectoriesInDomains函數一共有三個參數(注意返回的是一個數組),第一個參數是代表獲取什么文件的路徑(枚舉選擇就可),系統已經幫我們封裝好.第二個參數代表從用戶文件夾下找,第三個參數代表查找時文件是否展開,這個參數一般就填為yes,否則的話可能找不到路徑,通過no,獲取的路徑,系統會將前面的路徑換為一個~,如下圖:

    

 

  正常情況下,為YES的情況輸出如下圖:

  

 

  所以此處注意:這個NSSearchPathForDirectoriesInDomains函數的第三個參數一般都要寫為YES.注意這個函數返回的是一個數組,但是在ios系統中的沙盒只有這樣的一個文件夾,所以取數組的第0個元素即可.

    在mac系統中,有一個能自動找到應用沙盒的根目錄的軟件simpholder2.app,在測試使用是非常方便,可以下載使用.(需要的話請聯系595632239@163.com)

 

 

  獲取應用沙盒tmp目錄的方法:

  

//獲取應用沙盒tmp目錄NSString *tmp = NSTemporaryDirectory();
 

  

  

   獲取應用沙盒caches目錄的方法:

1 //獲取應用沙盒tmp目錄2 3 NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];4 5 6 //當然也可以使用最開始上面介紹的字符串拼接方法獲得,此處不再贅述

 

 

   獲取應用沙盒preference目錄的方法:

     通過NSUserDefaults類存取該目錄下的設置信息

 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 

 

 

plist文件存取方式

  屬性列表是一種XML格式的文件,拓展名為plist

  如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,就可以使用writeToFile:atomically:方法直接將對象寫到屬性列表文件中
 
  我通過一個小的demo來測試這個plist文件 的存取過程.
  在storyboard中拖入兩個按鈕,分別拖線,執行保存和讀取的方法:
  
 
  存儲操作:
  
 1 - (IBAction)save { 2      3     //獲取應用沙盒的根目錄有兩種方法 4 //    //第一種方法: 5 //    //獲取當前應用沙盒的根目錄 6 //    NSString *homePath = NSHomeDirectory(); 7 //    //拼接路徑 8 //    NSString *docPath = [homePath stringByAppendingPathComponent:@"Documents"]; 9 //10 //    //還要指定存儲文件的文件名稱,仍然使用字符串拼接11 //    NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];12 //    //NSLog(@"%@",filePath);13     14     //第二種方法15     NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];16         //還要指定存儲文件的文件名稱,仍然使用字符串拼接17     NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];18     NSLog(@"%@",filePath);19     //新建一個數組(作為例子)20     NSArray *array = @[@"abc",@123,@"a-d-g"];21     22     //將數組存儲到文件中23     [array writeToFile:filePath atomically:YES];24     25 26     27     28 }

 

 

  讀取操作:

  

 1 - (IBAction)read { 2      3     //獲取Documents目錄 4     NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 5     //還要指定存儲文件的文件名稱,仍然使用字符串拼接 6     NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"]; 7      8      9     //使用一個數組來接受數據10     NSArray *array = [NSArray arrayWithContentsOfFile:filePath];11     NSLog(@"%@",array);12     13 }

 

  我這里是使用NSArray來進行測試存取的,也可以使用字典.但是有一點需要注意,就是存取字符串的時候,最好不要使用plist文件,因為plist本身不支持字符串(這個可以通過新建一個plist文件,打開之后,發現其根節點處,只有數組和字典兩個選項),而且字符串的存取方法也已經過期.

 

  此處再順便 介紹一下上面提到的能自動找到應用沙盒的根目錄的軟件simpholder2.app軟件,安裝打開之后,

 

點擊之后就會自動打開當前應用的沙盒,非常方便測試使用.

 

  

 

  最后附上程序的源代碼:

ViewController:

  

 1 // 2 //  ViewController.m 3 //  02-plist文件存取 4 // 5 //  Created by hukezhu on 15/6/5. 6 //  Copyright (c) 2015年 hukezhu. All rights reserved. 7 // 8  9 #import "ViewController.h"10 11 @interface ViewController ()12 - (IBAction)save;13 14 - (IBAction)read;15 @end16 17 @implementation ViewController18 19 - (void)viewDidLoad {20     [super viewDidLoad];21     // Do any additional setup after loading the view, typically from a nib.22 }23 24 - (void)didReceiveMemoryWarning {25     [super didReceiveMemoryWarning];26     // Dispose of any resources that can be recreated.27 }28 29 //獲取應用沙盒的根目錄有兩種方法30 //第一種方法:31 32 33 34 - (IBAction)save {35     36     //獲取應用沙盒的根目錄有兩種方法37 //    //第一種方法:38 //    //獲取當前應用沙盒的根目錄39 //    NSString *homePath = NSHomeDirectory();40 //    //拼接路徑41 //    NSString *docPath = [homePath stringByAppendingPathComponent:@"Documents"];42 //43 //    //還要指定存儲文件的文件名稱,仍然使用字符串拼接44 //    NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];45 //    //NSLog(@"%@",filePath);46     47     //第二種方法48     NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];49         //還要指定存儲文件的文件名稱,仍然使用字符串拼接50     NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];51     NSLog(@"%@",filePath);52     //新建一個數組(作為例子)53     NSArray *array = @[@"abc",@123,@"a-d-g"];54     55     //將數組存儲到文件中56     [array writeToFile:filePath atomically:YES];57     58 59     60     61 }62 63 - (IBAction)read {64     65     //獲取Documents目錄66     NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];67     //還要指定存儲文件的文件名稱,仍然使用字符串拼接68     NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];69     70     71     //使用一個數組來接受數據72     NSArray *array = [NSArray arrayWithContentsOfFile:filePath];73     NSLog(@"%@",array);74     75 }76 @end
VIewController

  

  本篇文章只是說了一個plist文件的存取,剩下的文件存取方式,之后再介紹.  

 

 

 

 

  根據學習,整機整理相關知識點,如有錯誤不當之處,請批評指正,謝謝.

 

 

 

 

轉載:http://www.cocoachina.com/ios/20150720/12610.html

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品99久久久久久www| 亚洲精品少妇网址| 欧美一级淫片aaaaaaa视频| 怡红院精品视频| 欧美成人午夜视频| www.久久草.com| 色综合天天狠天天透天天伊人| 国产成人拍精品视频午夜网站| 成人疯狂猛交xxx| 亚洲毛茸茸少妇高潮呻吟| 久久91亚洲人成电影网站| 欧美第一黄网免费网站| 中文字幕日韩av电影| 色妞色视频一区二区三区四区| 国产视频亚洲精品| 国产有码在线一区二区视频| 国产精品十八以下禁看| 97视频在线观看免费| 久久综合色影院| 亚洲电影免费观看高清完整版在线| 国产一区二区三区视频在线观看| 精品女厕一区二区三区| 亚洲天堂av高清| 亚洲一区二区三区香蕉| 日韩在线小视频| 性色av一区二区三区免费| 欧美怡红院视频一区二区三区| 成人免费视频网址| 亚洲无av在线中文字幕| 乱亲女秽乱长久久久| 日本亚洲欧洲色α| 91禁外国网站| 日本欧美精品在线| 日韩高清av一区二区三区| 国产视频自拍一区| 奇米四色中文综合久久| 欧洲永久精品大片ww免费漫画| 丁香五六月婷婷久久激情| 亚洲欧美成人一区二区在线电影| 日韩网站免费观看高清| 日韩在线观看免费| 中文字幕av日韩| 性欧美视频videos6一9| 91免费看片网站| 日本精品一区二区三区在线| 亚洲精品xxx| 日本高清视频一区| 中文字幕亚洲欧美| 亚洲视频一区二区| 91av视频在线| www.亚洲一区| 亚洲免费成人av电影| 国产精品入口日韩视频大尺度| 国产亚洲一区二区精品| 国产精品美女www爽爽爽视频| 欧美多人爱爱视频网站| 69av视频在线播放| 欧美成人激情视频免费观看| 一个人www欧美| 亚洲天堂第二页| 一区二区三区 在线观看视| 福利视频导航一区| 91色视频在线观看| 久久精品亚洲热| 国产欧美日韩专区发布| 性色av一区二区三区红粉影视| 在线看日韩av| 欧美日韩精品在线视频| 日韩专区在线播放| 一区二区三区视频观看| 国外色69视频在线观看| 欧美黑人一级爽快片淫片高清| 欧美夫妻性视频| 国产精品中文字幕在线观看| 亚洲天堂成人在线| 中文字幕久久精品| 久久久人成影片一区二区三区观看| 欧美性猛交99久久久久99按摩| 国产成人精品视频| 国产精品综合不卡av| 国产中文日韩欧美| 992tv成人免费影院| 日韩网站免费观看高清| 91色视频在线观看| 亚洲欧美自拍一区| 国产精品自拍网| 国产精品成人一区二区三区吃奶| 伊人精品在线观看| 色999日韩欧美国产| 日韩欧美在线网址| 在线播放日韩精品| 欧美日韩精品中文字幕| 精品五月天久久| 成人免费视频xnxx.com| 亚洲欧洲在线观看| 97色在线观看免费视频| 91午夜理伦私人影院| 欧美电影免费在线观看| 欧美xxxx14xxxxx性爽| 国产精品久久一| 欧美日韩在线观看视频小说| 欧美最猛性xxxxx免费| 91系列在线观看| 国产精品稀缺呦系列在线| 亚洲欧美色图片| 久久久久女教师免费一区| 欧美性猛交xxxxx免费看| 亚洲a∨日韩av高清在线观看| 国产欧美日韩精品专区| 日本久久亚洲电影| 国产美女高潮久久白浆| 欧美激情亚洲视频| 久久躁日日躁aaaaxxxx| 亚洲国产精品一区二区久| 国产精品久久婷婷六月丁香| 欧美精品第一页在线播放| 国产精品美腿一区在线看| 国产成人在线一区二区| 久久频这里精品99香蕉| 国模叶桐国产精品一区| 久久露脸国产精品| 色偷偷亚洲男人天堂| 激情av一区二区| 日韩高清人体午夜| 国产一区二区三区高清在线观看| 日韩精品极品毛片系列视频| 国产精品免费视频久久久| 2019中文字幕全在线观看| 色综合色综合久久综合频道88| 中文字幕亚洲一区二区三区| 国外成人在线视频| 欧美一级免费视频| 久久精品视频在线观看| 亚洲欧美激情另类校园| 日韩中文字幕网| 欧美又大又硬又粗bbbbb| 亚洲男人天堂网站| 亚洲女性裸体视频| 亚洲激情视频在线观看| 久久久久久香蕉网| 91中文字幕在线观看| 久久福利视频网| 国产精品观看在线亚洲人成网| 欧美精品在线播放| 丝袜情趣国产精品| 亚洲成色777777在线观看影院| 日韩av在线影院| 久久久国产一区| 亚洲国产成人在线播放| 亚洲精品欧美日韩专区| 91免费综合在线| 精品国产一区二区三区久久狼黑人| 68精品久久久久久欧美| 成人在线国产精品| 中文字幕精品久久| 欧美又大又粗又长| 日韩欧美在线免费观看| 亚洲精品一区二三区不卡| 精品国产乱码久久久久酒店| 国产成人精品视频在线观看| 日韩av在线网页| 午夜精品久久久久久久久久久久| 91久久嫩草影院一区二区| 日韩中文字幕视频在线|