2011-05-23 75 views
1

我正在開發一款應用程序,讓用戶將語音(以及其他內容)錄製到應用程序的Documents目錄中。但是當我錄製聲音時,我正在錄製應用程序的緩存目錄,然後在用戶說「好的,保存這個聲音」之後,我將它應用到Documents目錄。到目前爲止所有這些工作。但是,如果我嘗試刪除緩存中的數據文件,或者當我嘗試移動它時遇到問題。什麼時候iPhone應用程序緩存被清除?

所以我的問題是,我應該只留下緩存中的數據,以便iOS將處理它,或者我需要手動刪除緩存中的文件。如果是的話,我該如何去做。這是我迄今爲止的代碼(這是行不通的)

NSFileManager *fm = [NSFileManager defaultManager]; 
    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; 
    NSError *error = nil; 
    BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", directory, currentEntry.audioFileURL] error:&error]; 
    if (!success || error) { 
     // it failed. 
     NSLog(@"it failed to delete!!! %@ %@", error, [error userInfo]); 
    } else { 
     NSLog(@"Deleted... yipee... !!!"); 
    } 
+1

'$(APP_WRAPPER)/ Library/Caches'中的數據不會被備份或恢復,但它也不會自動獲得。當它失敗時,你會得到什麼錯誤? – 2011-05-23 18:15:21

+0

嗨克里斯,事實證明我使用了錯誤的路徑。管理解決它。謝謝您的幫助。 – hdsenevi 2011-05-24 12:26:24

回答

6

我認爲問題在於你的路徑不正確。始終使用

- (NSString *)stringByAppendingPathComponent:(NSString *)aString 

方法NSString

你可以嘗試打印出你現在得到的路徑(也許反斜槓丟失),但無論如何,你應該使用我描述的方法。

UPD:另一件事是,NSCachesDirectory實際上從來沒有清理。如果您想自動清潔,請使用NSTemporaryDirectory()

+0

看來你是對的。我設置的路徑是錯誤的。我設法使用當前的代碼來完成它(刪除文件)。沒有使用stringByAppendingPathComponent:這個實例。感謝提到NSTemporaryDirectory()。我會看看。非常感謝。乾杯 – hdsenevi 2011-05-24 12:23:41

相關問題