我想從plist讀取數據,添加一些元素並將數據寫入plist(更新plist)。將數據寫入plist
我想讓plist擁有一個字典數組,將此數組讀入我的應用程序,添加字典,然後將數組寫回plist。
這是如何完成的?我也不確定在第一次啓動應用程序時在哪裏以及如何創建plist。還是應該從一開始就把它放在包裏?
我不確定的另一件事是如果plist字典可以容納例如CLLocations作爲鍵的值?它會被正確保存還是需要將CLLocation分解爲經度和緯度值?
感謝
我想從plist讀取數據,添加一些元素並將數據寫入plist(更新plist)。將數據寫入plist
我想讓plist擁有一個字典數組,將此數組讀入我的應用程序,添加字典,然後將數組寫回plist。
這是如何完成的?我也不確定在第一次啓動應用程序時在哪裏以及如何創建plist。還是應該從一開始就把它放在包裏?
我不確定的另一件事是如果plist字典可以容納例如CLLocations作爲鍵的值?它會被正確保存還是需要將CLLocation分解爲經度和緯度值?
感謝
創建從一個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只能包含的NSDictionary
,NSArray
,NSNumber
和NSString
實例,所以你不能把一個CLLocation
在plist中無需轉換。如果您需要保存非Plist對象,請查看NSKeyedArchiver
。它可以從任何採用協議(CLLocation
)的協議創建文件和NSData
對象。
字典數組呢?除了使用數組之外,它會和上面一樣嗎?它會很好,因爲該數組包含NSDictionaries? – jarryd 2011-05-26 20:45:44
字典的陣列很好,數組陣列,數字字典也很好......你明白了。 – omz 2011-05-26 20:50:36
@omz我試過這種閱讀方法,但由於某種原因,當我嘗試在真實設備上書寫時,它會返回舊數據。有任何想法嗎? – MikeIsrael 2012-05-03 15:07:00