2010-02-24 7 views
0

J'essaie de créer une application pour prendre des photos d'un site Web et les enregistrer dans NSDocumentDirectory pour une utilisation ultérieure. Jusqu'ici j'ai échoué dans mes tentatives, et je me demande comment le faire.Comment supprimer une image d'un site Web et l'enregistrer dans NSDocumentDirectory

Pas beaucoup plus d'explications est nécessaire, mais voici quelques-unes de mes (échec) tente:
One:

NSString *path = @"http://miniwidgit.webs.com/TabRight2.png"; 
NSFileManager *fmgr = [NSFileManager defaultManager]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *fileName = [[NSString alloc] initWithFormat:@"%@/File.jpg", documentsDirectory]; 
NSLog(fileName); 
NSError *err; 
if ([fmgr copyItemAtPath:path toPath:fileName error:&err]) 
{} 
else 
{ 
    NSLog([NSString stringWithFormat:@"%@%@.", @"There was an error. The error was: ", err]); 
} 

Deux:

NSURL *path = [NSURL URLWithString:@"http://miniwidgit.webs.com/TabRight2.png"]; 
NSFileManager *fmgr = [NSFileManager defaultManager]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *fileName = [[NSString alloc] initWithFormat:@"%@/File.jpg", documentsDirectory]; 
NSLog(fileName); 
NSError *err; 
NSString *image = [[NSString alloc] initWithContentsOfURL:path]; 
[image writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionExternalRepresentation error:&err]; 
NSLog([NSString stringWithFormat:@"%@%@.", @"There was an error. The error was: ", err]); 

On One, je suis l'erreur :

Error Domain=NSPOSIXErrorDomain Code=2 UserInfo=0x3b171b0 "Operation could not be completed. No such file or directory,"

mais cela n'a pas de sens, parce que l'image (sur mon si te) existe.

sur deux, je me suis l'erreur:

Error Domain=NSCocoaErrorDomain Code=517 UserInfo=0x3b33090 "Operation could not be completed. (Cocoa error 517.)"

+0

Beaucoup d'explications sont nécessaires, en commençant par l'erreur que vous obtenez. – Nifle

+1

Pourquoi essayez-vous de mettre une image dans une variable de chaîne? Pourquoi essayez-vous d'enregistrer un fichier .png en tant que fichier .jpg? –

Répondre

4

Ce n'est pas un chemin de fichier - c'est une URL pour une ressource HTTP. Vous devez utiliser l'une des API de chargement d'URL (par exemple, NSURLDownload) pour télécharger l'image.

Avec le code que vous avez maintenant dans le numéro 1, il cherche un fichier appelé "TabRight2.png" qui se trouve dans un répertoire appelé "miniwidget.webs.com" qui se trouve dans un répertoire appelé "http:" qui est dans le répertoire actuel - et bien sûr ne pas en trouver un. Avec le second, vous essayez de charger une image dans un NSString. Il est difficile de dire quelle est l'erreur exacte dans ce cas, mais c'est déconseillé et peut-être le coupable. Les NSStrings sont pour le texte, et les images peuvent contenir des séquences qui ne sont pas valides comme texte dans n'importe quel encodage. Vous devez utiliser NSData pour stocker les données binaires, pas NSString.