2011-05-26 132 views
3

我想從plist讀取數據,添加一些元素並將數據寫入plist(更新plist)。將數據寫入plist

我想讓plist擁有一個字典數組,將此數組讀入我的應用程序,添加字典,然後將數組寫回plist。

這是如何完成的?我也不確定在第一次啓動應用程序時在哪裏以及如何創建plist。還是應該從一開始就把它放在包裏?

我不確定的另一件事是如果plist字典可以容納例如CLLocations作爲鍵的值?它會被正確保存還是需要將CLLocation分解爲經度和緯度值?

感謝

回答

6

創建從一個plist中詞典的最簡單方法是使用方法dictionaryWithContentsOfFile:,例如,從您的資源加載的plist:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 

寫的plist同樣簡單:

[dict writeToFile:filePath atomically:YES]; 

(請注意,你不能寫到您的應用程序的資源,所以你必須在你的文檔直接創建一個不同的路徑,例如ORY,見NSSearchPathForDirectoriesInDomains

的Plist只能包含的NSDictionaryNSArrayNSNumberNSString實例,所以你不能把一個CLLocation在plist中無需轉換。如果您需要保存非Plist對象,請查看NSKeyedArchiver。它可以從任何採用協議(CLLocation)的協議創建文件和NSData對象。

+0

字典數組呢?除了使用數組之外,它會和上面一樣嗎?它會很好,因爲該數組包含NSDictionaries? – jarryd 2011-05-26 20:45:44

+1

字典的陣列很好,數組陣列,數字字典也很好......你明白了。 – omz 2011-05-26 20:50:36

+0

@omz我試過這種閱讀方法,但由於某種原因,當我嘗試在真實設備上書寫時,它會返回舊數據。有任何想法嗎? – MikeIsrael 2012-05-03 15:07:00