2010-03-04 6 views
0

Je travaille sur un projet iPhone dans lequel j'ai besoin sauvegarder des images sur le disque et le fichier mais le code échoue ci-dessous: (******** ****iPhone: Comment écrire une image sur le disque dans les répertoires App

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

[picker dismissModalViewControllerAnimated:YES]; 
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
imgglobal =imageView.image; 
NSString *newFilePath = [NSHomeDirectory() stringByAppendingPathComponent: @"~/Users/abc/Library/Application Support/iPhone Simulator/User/Applications/SAVE_IMAGE_TEST1.JPG"]; 
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 1.0); 
NSData *data = imageData; 
if (imageData != nil) { 
    [imageData writeToFile:newFilePath atomically:YES]; 
} 
if ([[NSFileManager defaultManager] createFileAtPath:@"~/Users/abc/Library/Application Support/iPhone Simulator/User/Applications/SAVE_IMAGE_TEST1.JPG" contents:data attributes:nil]) 
{ 
    UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Image was successfully saved to the Photo Library." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil]; 
    [successAlert show]; 
    [successAlert release]; 
} else { 
    UIAlertView  *failureAlert = [[UIAlertView alloc] initWithTitle:@"Failure" message:@"Failed to save image to the Photo Library." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil]; 
    [failureAlert show]; 
    [failureAlert release]; 
}  
} 
+1

Si vous spécifiez vraiment un chemin vers un emplacement sur votre ordinateur au lieu de l'intérieur de l'environnement iPhone? – willcodejavaforfood

Répondre

3

vous ne devriez pas avoir un chemin codé en dur pour les répertoires de simulateur. Cela échouera sur l'appareil ou lorsque la réinitialisation du simulateur. vous ne devriez enregistrer les données de l'utilisateur partout, mais le dossier de document de l'application.

utiliser:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *pathToDocuments=[paths objectAtIndex:0]; 

Cela retourne le chemin actuel du répertoire de documents de l'application quel que soit l'endroit où il est exécuté ou ce qui a changé.

Vous ne devez jamais utiliser des chemins absolus dans le code iPhone car le système brouille les pistes pour la sécurité. Utilisez toujours les fonctions qui récupèrent dynamiquement les chemins si nécessaire.

Questions connexes