0
A
回答
0
- (void)createEditableCopyOfFileIfNeeded:(NSString *)plistName
{
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:plistName];
success = [fileManager fileExistsAtPath:plistPath];
if (success)
{
return;
}
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:plistName];
success = [fileManager copyItemAtPath:defaultPath toPath:plistPath error:&error];
if (!success)
{
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
感謝你能做到這樣:
- 重命名舊的plist例如old.plist
- 從單獨的文件中讀取這兩種的Plist
- 合併信息所需的編程選擇添加信息,新的plist
- 保存新的plist合併
+0
但我希望在應用程序啓動時發生這種情況 – sajaz
+0
你也可以寫一個簡短的代理類。當它被要求提供信息時,它將確定信息是在舊的還是在新的plist文件中並按需合併。 –
+0
因此,請閱讀啓動時需要的所有信息。您將需要編寫合併類或將它與某些文本合併工具合併。畢竟,你可以在文本上做到這一點 –
2
我會在您的plist到版本關鍵將其與應用程序的版本進行比較。你可以用下面的代碼片段檢查應用程序的版本:
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]
然後,在應用程序的啓動:
- 閱讀plist中,如果沒有版鍵,它會是舊版本。
- 如果舊版本然後執行數據遷移到當前版本,添加具有默認值的不存在的密鑰。在這裏,我會考慮將來更新的不同版本號。
- 添加版本鍵與您的捆綁軟件的版本作爲值。
- 保存plist。
相關問題
- 1. 舊式plist linter
- 2. 重新arraywithobjects是plist
- 3. NSTableView與plist文件
- 4. 二元plist vs普通plist
- 5. Plist writeToFile覆蓋整個plist
- 6. 編輯一個TableView並更新plist
- 7. 存儲省,市,並與plist協調
- 8. 將plist讀入TableView
- 9. 將NSDictionary寫入plist
- 10. pList文件中的舊值被覆蓋
- 11. 如何將plist的一部分存儲到文件中,然後將其合併到另一個plist中?
- 12. 如何將新密鑰添加到plist?
- 13. 將文本從UITextView更新到Plist
- 14. 如何將多個plist文件合併爲一個?
- 15. iOS - PLIST - 從plist中訪問其他plist值
- 16. 如何在plist中存儲價值並訪問plist
- 17. 從plist獲取數據到NSMutableArray並將NSMutableArray寫入到相同的plist iPhone
- 18. 從PLIST
- 19. plist的更新部分
- 20. 如何更新Plist文件?
- 21. plist文件未更新
- 22. 從後臺更新plist
- 23. UITableView不是從plist更新
- 24. 在iPhone中更新值plist
- 25. iOS plist保存更新
- 26. 從現有的plist創建一個新的plist?
- 27. Plist每次重寫舊數據我保存一個新數據
- 28. Cocoa - 搜索字段與Plist
- 29. UITableView中的UITableView與.plist
- 30. PHP:性能PLIST/XML與MySQL?
這是*數據遷移*,它取決於你對plist做什麼。你能否提供更多關於這個plist涉及的內容的信息? – atxe
當然,Plist有一本字典。我添加一個新的'鑰匙'字典。例如:OldDic - > key1 =「aa」key2 =「bb」newDic應該是這樣的newDic - > key1 =「aa」key2 =「bb」key3 =「cc」 – sajaz