2009-06-23 14 views
17

エラーキャッシュディレクトリにデータを保存する(iPhone)

- (void)writeData{ 

    if(cacheFileName==nil) 
     return; 
    if(cacheDirectoryPath==nil) 
     return; 


    if (![[NSFileManager defaultManager] fileExistsAtPath:[self filePath]]) {   

     NSData *imageData = UIImageJPEGRepresentation(self.image, 0.9); 

     NSError *writeError= nil; 

     BOOL didWrite = [imageData writeToFile:[self filePath] options:NSAtomicWrite error:&writeError]; 

     if(writeError) 
      NSLog([writeError localizedDescription]); 

     if(didWrite) 
      NSLog(@"image saved"); 
     else 
      NSLog(@"image not saved"); 


    } 
} 





- (NSString *)filePath{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *cacheDirectory = [paths objectAtIndex:0]; 
    NSString *filename = [cacheDirectory stringByAppendingPathComponent:cacheDirectoryPath]; 
    filename = [filename stringByAppendingPathComponent:cacheFileName]; 
    NSLog(filename); 

    return filename; 

} 

私はエラーを取得する:

2009-06-23 16:39:19.740 XXX[33454:20b] Operation could not be completed. (Cocoa error 4.) 

私はこれを見て、エラーを参照してください

NSFileNoSuchFileError = 4,     // Attempt to do a file system operation on a non-existent file 

ファイルが存在してはいけないので意味がありません。

私はPNG形式の表現を書き込み、便利なメソッドを使用して試してみました:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag 

私はプレースメントリストを保存するために同様のコードを使用しています、そして、彼らは正常に動作。私は問題が何であるか分かりません。何か案は?

+0

前にそれらを作成するために

-[NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:] 

を使用している場合ではありません。 (cacheDirectory/** cacheDirectoryPath **/filename)は、中間メディアディレクトリが作成されていますか? – epatel

+0

いいえ、自動的に作成されませんか? –

+0

私はそうは思わない。中間のパスを削除して、何が起こるかを確認してください... – epatel

答えて

28

キャッシュディレクトリ内で中間ディレクトリを使用していますが、作成されていますか?それらを削除してみたり、キャッシュディレクトリ内のいくつかのディレクトリに保存されているように見えます

関連する問題