2009-06-23 5 views
17

Je suis en train d'enregistrer des images en utilisant le code suivant:la sauvegarde des données Erreur dans le répertoire de cache (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; 

} 

Je reçois une erreur:

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

Je regardais cette et voir l'erreur a la signification suivante:

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

Ce qui n'a pas de sens puisque le fichier ne devrait pas exister.

J'ai essayé d'écrire la représentation et .png en utilisant la méthode pratique:

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

J'utilise un code similaire pour sauver plists, et ils fonctionnent très bien. Je ne suis pas sûr du problème. Des idées?

+0

Il semble que vous enregistrez dans un répertoire à l'intérieur du cache dir. (cacheDirectory/** cacheDirectoryPath **/filename) les répertoires intermediare ont-ils été créés? – epatel

+0

Non, n'est-ce pas créé automatiquement? –

+0

Je ne pense pas. Essayez de supprimer le chemin intermédiaire et voir ce qui se passe ... – epatel

Répondre

28

Je vois que vous utilisez un répertoire intermédiaire dans le répertoire cache, sont-ils/ils créés? Si essayez de ne pas les enlever ou utiliser

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

pour les créer avant

Questions connexes