2011-08-10 13 views
7

iPadアプリのキャッシュフォルダに何かを保存しようとしています。NSCachesDirectoryがファイルシステム内のディレクトリではありません

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

そして、私は返さファイルパスをプリントアウトしたときに、私が取得:

/ユーザ/ジェラ/ライブラリ/ Application Support/iPhone シミュレータ/ 5.0 /アプリケーション/ 3FF7EB1A-4​​9A9-4B13-ADC4を-D06B1B724B /ライブラリ/キャッシュ

ただし、ハードドライブのそのフォルダに移動すると、「キャッシュ」はフォルダではなく曖昧な「ドキュメント」ファイルになります。

なぜフォルダではないのか、キャッシュに書き込むことができるのでしょうか?

+0

...ファイルデータを取得するため、このメソッドを使用しますディレクトリが失われました..いくつかのバグのようです – yasirmturk

答えて

13

Simulatorは、Cachesdirを持っていない可能性があります。デバイスでこれを試してみてください...

このようにCachesディレクトリにアクセスできます。あなたはiOSのディレクトリに `nil`を格納し、それはあなたのディレクトリを台無しSDKおよびいくつかのゴミファイルに変更し、その内のすべてのデータをしようとする場合、私は時々

- (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

ええ、私はキャッシュディレクトリへのパスを見つける方法を知っています。問題は "キャッシュ"が私のハードドライブ上のディレクトリではないということです。あなたのサンプルコードの最後の行をインクルードすると、パスがディレクトリではないというエラーが表示されます。 – user888382

+0

ええ、上の私の更新を見てください。私は思っていた、おそらくシミュレータには 'Caches'ディレクトリがありません... –

+0

私はコンピュータ上でiPadシミュレータを使用して以前のiPadアプリでこれをやっており、彼らはDocuments and Library/Cachesディレクトリを持っていました。私は、この特定のアプリのキャッシュディレクトリが壊れている可能性があると思いますか? – user888382

関連する問題