我正在使用此代碼從本地(在XCode項目中).plist文件中讀取數據。如何獲取新的.plist數據
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"GameData.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"GameData" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
gameData = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
和它的工作很大的開始,但現在我發現,當我通過我的遊戲使用一個版本,在一開始就存在的的.plist文件的模擬器的執行代碼,而新領域我在新的GameData.plist文件中沒有出現。
我認爲這是因爲如果文件已經存在,它不會再次獲取數據?但那麼我如何獲得.plist文件的新版本?我試圖刪除if語句,但我得到一個運行時錯誤,說文件已經存在。
檢查'copyItemAtPath:error:'的返回值。如果它返回'NO',則記錄'error'。 – rmaddy
我將忽略整個字符串,但它包含此「可可錯誤516」。和「操作無法完成。文件存在」,這顯示在copyItemAtPath行。 – Phil
這沒有意義。您檢查它是否存在,並且只有在不存在時才嘗試複製。所以你不應該得到關於現有文件的錯誤。 – rmaddy