1. 程式人生 > >IOS 對plist檔案的讀寫

IOS 對plist檔案的讀寫

在做iOS開發時,經常用到到plist檔案,  那plist檔案是什麼呢? 它全名是:Property List,屬性列表檔案,它是一種用來儲存序列化後的物件的檔案。屬性列表檔案的副檔名為.plist ,因此通常被稱為 plist檔案。檔案是xml格式的。

Plist檔案通常用於儲存使用者設定,也可以用於儲存捆綁的資訊

我們建立一個專案來學習plist檔案的讀寫。

1、首先新建一個專案LTReadWritePlist,專案建立好以後,系統會預設建立一個plist檔案,
     我們建立的工程中,plist檔案是在Supporting Files下面的LTReadWritePlist-Info.plist,開啟顯示如下:


在編輯器中顯示的形式與表格類似,另外也可以使用Source code形式開啟,開啟plist是xml格式的。

2、建立plist檔案,

  選中工程中的Supporting Files,右鍵點選,選擇Add File to "工程名",
  在iOS下面的Resource中選擇Property List,建立一個school.plist的檔案,
  開啟新建立的檔案,顯示如下:


點選Key 下面的Root後面的加號,新增一個數據,同時修改Type為Dictionary,然後在下面新增資料,新增完成以後資料顯示如下圖:


3、讀取plist檔案資料

讀取程式碼如下:

 /*對plist檔案的讀*/
    NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"schoolinfo" ofType:@"plist"];
    NSMutableDictionary *data=[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"%@",data);
    /*讀取資料結束*/

顯示如下:


想schoolinfo.plist中追加資料,程式碼如下:

//在plist中追加寫入資料
    [data setObject:@"20" forKey:@"count"];
    [data writeToFile:plistPath atomically:YES];//儲存
追加資料以後顯示如下:


4、建立與寫plist檔案

程式碼如下(data資料接上):

 /*儲存資料一*/
    /*新建一個plist*/
    //獲取應用程式沙盒的Documents目錄
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *newplistPath = [paths objectAtIndex:0];
    //得到完整的檔名
    NSString *filename=[newplistPath stringByAppendingPathComponent:@"task.plist"];
    //儲存資料
    [data writeToFile:filename atomically:YES];
    /*儲存資料一結束*/
    
    //將儲存的資料讀出來
    NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];
    NSLog(@"%@", data1);

5、建立string型別plist

程式碼如下:

/*寫入string資料*/
    //獲取路徑物件
    NSArray *path1=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentpath=[path1 objectAtIndex:0];
    NSString *stringplistpath=[documentpath stringByAppendingPathComponent:@"stringinfo.plist"];
    NSMutableDictionary *dicplist=[NSMutableDictionary dictionary];
    //設定屬性
    [dicplist setObject:@"20" forKey:@"age"];
    [dicplist setObject:@"male" forKey:@"sex"];
    [dicplist setObject:@"sports" forKey:@"hobby"];
    //寫入檔案
    [dicplist writeToFile:stringplistpath atomically:YES];
    /*結束寫入string資料*/

6、建立Dictionary型別plist
    /*建立並寫入Dictionary鍵值plist*/
    NSArray *path2=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentpath2=[path2 objectAtIndex:0];
    NSString *dicplistpath=[documentpath2 stringByAppendingPathComponent:@"dicinfo.plist"];
    
    NSMutableDictionary *rootdicplist=[NSMutableDictionary dictionary];
    
    //定義第一個Dictionary集合
    NSMutableDictionary *child1plist=[NSMutableDictionary dictionary];
    [child1plist setObject:@"25" forKey:@"age"];
    [child1plist setObject:@"female" forKey:@"sex"];
    [child1plist setObject:@"basketball" forKey:@"hobby"];
    
    //新增到根集合中
    [rootdicplist setObject:child1plist forKey:@"xiaohua"];
    
    //定義第二個Dictionary集合
    NSMutableDictionary *child2plist=[NSMutableDictionary dictionary];
    [child2plist setObject:@"23" forKey:@"age" ];
    [child2plist setObject:@"male" forKey:@"sex" ];
    [child2plist setObject:@"football" forKey:@"hobby" ];
    
    [rootdicplist setObject:child2plist forKey:@"xiaozhang"];
    //寫入檔案
    [rootdicplist writeToFile:dicplistpath atomically:YES];
    /*結束建立並寫入Dictionary鍵值plist*/
    

7、修改string型別plist

程式碼如下:

 /*對string plist檔案的修改*/
    NSArray *changepath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *changestringpath=[changepath objectAtIndex:0];
    NSString *endchangepath=[changestringpath stringByAppendingPathComponent:@"stringinfo.plist"];
    NSMutableDictionary *mutablestring=[[NSMutableDictionary alloc] initWithContentsOfFile:endchangepath];
    NSString *age=[mutablestring objectForKey:@"age"];
    [email protected]"27";
    [mutablestring setObject:age forKey:@"age"];
    [mutablestring writeToFile:endchangepath atomically:YES];
    [mutablestring release];
    /* end 對string plist檔案的修改*/

8、修改Dictionary型別plist
/*對Dictionary plist檔案的修改*/
    NSString *changedicpath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"dicinfo.plist"];
    NSMutableDictionary *dicinfolist=[[NSMutableDictionary alloc] initWithContentsOfFile:changedicpath];
    //獲取小張的資訊
    NSMutableDictionary *dicuser=[dicinfolist objectForKey:@"xiaozhang"];
    [dicuser setObject:@"female" forKey:@"sex"];
    [dicinfolist setObject:dicuser forKey:@"xiaozhang"];
    [dicinfolist writeToFile:changedicpath atomically:YES];

示例下載地址:下載

相關推薦

IOS plist檔案

在做iOS開發時,經常用到到plist檔案,  那plist檔案是什麼呢? 它全名是:Property List,屬性列表檔案,它是一種用來儲存序列化後的物件的檔案。屬性列表檔案的副檔名為.plis

ios 簡單的plist檔案操作(Document和NSUserDefaults)

//    [self getDocoumentsPath];//蘋果建議將程式建立產生的檔案以及應用瀏覽產生的檔案資料儲存在該目錄下,iTunes備份和恢復的時候會包括此目錄 //    [self getLibraryPath];//儲存程式的系統預設狀態設定 //

iOS plist 檔案操作

1丶 讀 //建立檔案管理器 NSFileManager *fileManager = [NSFileManagerdefaultManager]; NSArray *pathA = NSS

IOS沉思錄】IOS的資料持久化(plist檔案操作)

人生苦短,道阻且艱;修行不易,且行且努力。 【專業擅長領域】:iOS開發,遊戲開發,圖形學 【擅長平臺】:iOS平臺,Unity --------------------------------------------------------- 【個人主頁】:信厚

Pythoncsv檔案操作

 包括使用csv模組進行檔案讀寫,使用requests模組進行檔案傳送。 def pay_task_by_self(self): global success_writer, fail_writer, cont dir_path = os.path.dirname(_

VC\c++ 文字檔案方法(sys,txt)

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間; 在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子: 1、插入器(<

ios plist檔案的修改

這篇文章是自己通過實踐獲取,在網上查過很多資料,也走了不上的彎路,由於剛開始學子不久,只是把自己遇到的問題貢獻給大家 一,建立檔案     //獲取路徑物件 NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDo

iOS】第03講 檔案/NSArray/NSData/NSFileManager/NSFileHandle

一、沙盒    模擬器上的沙盒目錄路徑    ~/Library/Application Support/iPhone Simulator/6.0/Applications         &n

Java檔案管理工具

Java對檔案讀寫管理工具 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import j

Java檔案的操作詳解

Java中檔案讀寫操作的作用是什麼?回答這個問題時應該先想到的是Java只是一門語言,我們的一種使用工具而已,這樣答案就明晰了,就是將外來的各種資料寫入到某一個檔案中去,用以儲存下來;或者從檔案中將其資料讀取出來,供我們使用。就如下電影過程,從網路資源中下載一部電影保存於你

Java實現ftp的檔案(apache.commons.net.ftp)

這裡僅僅是對ftp工具類的簡單使用,很多東西還不是很瞭解。當然學以致用,先用到這裡吧。 public class FtpTest { /** * 向ftp寫檔案(資料) */ @Test public void uploadFile() {

[cocos2dx 3.0 (一)] 檔案操作 +FileUtils類

一直想學習下游戲程式設計,但總是沒下定決心。現在就從Cocos2dx開始學習吧,以後也要堅持寫些經驗文章,就當是給我自己的學習歷程的一個記錄吧。 我現在下的cocos2dx版本是3.0beta2的,而網上的大多數教程都是2.x的,有些地方有些小不同,所以難免碰到點磕碰。但這

iOS Swift 按鈕控制 簡單檔案

class CounterViewController:UIViewController{ overridefunc viewDidLoad()     { // 顯示的呼叫父類函式 super 表示父類 super.viewDidLoad() // ---

IOS iPhone 開發中的檔案及資料儲存(一)

 資料的儲存無疑是軟體開發中的重要課題。本文給初學者介紹下iphone開發中常見的檔案讀寫,當然,我也是初學者~ iOS的檔案儲存採用的是“沙箱機制”,也就是應用程式只能訪問自己的檔案目錄,每個應用程式的資料是獨立的,就像一個一個的沙箱一樣。這種管理方法比windows和原

IOS 檔案操作詳解及簡單例項

iPhone 檔案讀寫操作1,寫檔案操作- (IBAction)btnWrite:(id)sender { //建立檔案管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; //獲取路徑

Java建立一個text文字檔案,並其進行操作

package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.

彩色YUV視訊進行二進位制檔案時候的注意事項

開啟並讀寫YUV彩色視訊時,在寫yuv時候,開始用的是fopen(“.......”,"r+");結果視訊yuv檔案,有很厲害的抖動和顏色的偏移。後來改成如下,即fopen(“.......”,"rb");但是在寫的時候使用的fopen(yuvImageName,"r+")

iOS --- 關於SandBox機制及檔案的幾種方式

iOS中的SandBox(沙盒)機制是一種安全體系,它規定了APP只能在為該APP建立的資料夾內讀取檔案,不可以訪問其他地方的內容。所有的非程式碼檔案都儲存在這個地方,比如圖片、聲音、屬性列表和文字檔案等。即: 每個應用程式都在自己的沙盒內 不能隨意跨越自己

JAVA中關於像的

導入 異常捕獲 ima alt cto exc dex 創建 wid 1 /** 2 * 針對對象的文件讀寫 3 */ 4 5 //導入包 6 import java.io.File; 7 import java.io.FileInputStream;

Python—Excel進行操作

href ace 需要 文件中 tle net 過程 ova 設置 學習Python的過程中,我們會遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數據寫入Excel表格,使用xlrd module從Excel讀取數據。下面介紹如何實現使用pyt