2011-08-10 90 views
7

我試圖在我的iPad應用程序的Caches文件夾中存儲某些內容。NSCachesDirectory不是我的文件系統中的目錄

NSArray* cachePathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString* cachePath = [cachePathArray lastObject]; 

當我打印出來的文件路徑返回,我得到:

/用戶/格拉/庫/ Application Support/iPhone 模擬器/ 5.0 /應用/ 3FF7EB1A-4​​9A9-4B13-ADC4 -DF0662BA724B /圖書館/緩存

但是,當我瀏覽到該文件夾​​在我的硬盤「緩存」是不是一個文件夾,但模糊的「文檔」文件。

任何想法,爲什麼它不是一個文件夾,我怎麼可以寫入我的緩存?

+0

有時,如果你嘗試存儲'nil'在iOS版SDK目錄它攪亂了你的目錄,並更改爲一些垃圾文件,並在您的所有數據目錄丟失..好像有些bug – yasirmturk

回答

13

也許Simulator沒有Caches dir。你在設備上試試這個...

你可以像這樣訪問Caches目錄。我用這個方法用於獲取文件數據...

- (NSString *)getFileData: (NSString *)fileDirPath 
{ 
    NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *myPath = [myPathList objectAtIndex:0]; 
    NSError *err  = nil; 
    NSString *fData  = @""; 

    myPath = [myPath stringByAppendingPathComponent:fileDirPath]; 
    if([[NSFileManager defaultManager] fileExistsAtPath:myPath]) 
    { 
     fData = [NSString stringWithContentsOfFile:myPath encoding:NSUTF8StringEncoding error:&err]; 
     if(err) NSLog(@"getFileData() - ERROR: %@",[err localizedDescription]); 
    } 
    else 
    { 
     NSLog(@"getFileData() - ERROR: This file '%@' does not exist",myPath); 
    } 
    return fData; 
} 
+0

是的,我知道如何找到Caches目錄的路徑。問題是「緩存」不是我硬盤上的目錄。當我包含示例代碼的最後一行時,出現錯誤,提示路徑不是目錄。 – user888382

+0

是的,看我頂部的更新。我在想,也許模擬器沒有'Caches'目錄... –

+0

我已經在以前的iPad應用程序上使用我的電腦上的iPad模擬器完成了這項工作,並且他們擁有Documents and Library/Caches目錄。我認爲這個特定的應用程序的Caches目錄可能已損壞? – user888382

相關問題