測試人員說他只收到一次此消息,而我似乎無法再現該消息或找出此消息是如何出現的。在堅果殼中,我的應用程序啓動後臺線程並從我們的服務器獲取數據。一旦我們完成下載數據,我們將它存儲在一個xml文件中,所以我們可以從這個文件中獲取數據,以便在關閉xml的解析過程中關閉數據。一旦我完成解析XML我刪除該文件。這是我的代碼刪除。嘗試刪除存在的文件時出錯
-(void)deleteSavedXmlServerData
{
AppDelegate_Shared* appDelegate = (AppDelegate_Shared*)[[UIApplication sharedApplication] delegate];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fileToLoad = [NSString stringWithFormat:@"%@/%@/upload.xml", [paths objectAtIndex:0], appDelegate.userId];
if([[NSFileManager defaultManager] fileExistsAtPath:fileToLoad] == YES)
{
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtPath:fileToLoad error:&error];
if(error != nil)
{
eNSLog(@"%s Error Parsing old data: %@ info: %@", __PRETTY_FUNCTION__, error, [error userInfo]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Problem With Syncing"
message:@"Problem reading in old data."
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
}
一切看起來都很完美,如果這個文件沒有被刪除就沒有什麼大不了的。但我很困惑,爲什麼我會有刪除這個文件的問題。
當我檢查了什麼是錯誤信息,這是我得到這個。
-[ServerSync deleteSavedXmlServerData] Error Parsing old data: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x11f3ed60 "Operation could not be completed. (Cocoa error 4.)" info: {
NSFilePath = "/var/mobile/Applications/CD181518-512F-4A0E-82ED-C438886E4A1D/Documents/71BD9A11-A604-6001-549C-DF6582F60124/upload.xml";
NSUserStringVariant = Remove;
}
如果有人知道爲什麼如果我的文件存在,我創建它,爲什麼我不能刪除它?
更新
是困惑我的大部分問題,就是爲什麼第一個if語句表示該文件存在,但我是從嘗試刪除的文件得到錯誤信息說,我的文件不存在?
哎呀,我貼錯fileToLoad。我將帖子編輯爲正確的。至於NSCocoaErrorDomain代碼,那是我困惑的一部分。我的第一條if語句檢查文件是否存在,並且它確實存在。爲什麼remove語句說它不存在? – NixonsBack 2010-08-18 18:24:29
您正在使用線程。另一個線程可能訪問它嗎? – 2010-08-19 00:10:59
這是一種可能性,但該文件僅在同一個線程上創建和刪除。不應該訪問不同的線程,除非fileManger在主線程上執行所有操作。我會再給這個支票。 – NixonsBack 2010-08-23 18:02:58