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?
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
Non, n'est-ce pas créé automatiquement? –
Je ne pense pas. Essayez de supprimer le chemin intermédiaire et voir ce qui se passe ... – epatel