Erreur lors de l'enregistrement de données de répertoire de cache (iPhone)

Je suis en train d'enregistrer des images en utilisant le code suivant:

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

}

J'obtiens une erreur:

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

J'ai regardé ce et voir que l'erreur a la signification suivante:

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

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

J'ai essayé d'écrire de la png à la représentation et à l'aide de la méthode de convenance:

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

Je suis en utilisant un code similaire pour enregistrer les plists, et qu'ils fonctionnent très bien. Je ne suis pas sûr que le problème est. Des idées?

  • Il semble que vous enregistrez dans un répertoire à l'intérieur de la cache dir. (cacheDirectory/**cacheDirectoryPath**/filename) a l'intermediare dirs été créé?
  • Non, n'est-ce pas créé automatiquement?
  • Je ne le pense pas. Essayez de supprimer les intermédiaires chemin et voir ce qui se passe...
  • Merci! Qui était-il, si vous voulez o post cela comme une réponse, je peux le marquer comme étant la bonne réponse.
  • j'ai eu la même erreur, mais pour moi, c'était que j'étais à l'appel de la saveToURL dans uidocument rapide.
InformationsquelleAutor Corey Floyd | 2009-06-23