2010-02-24 2 views
0

Я пытаюсь сделать приложение для снятия фотографий с веб-сайта и сохранить их в NSDocumentDirectory для последующего использования. До сих пор я терпел неудачу в своих попытках, и мне интересно, как это сделать.Как сделать снимок с сайта и сохранить его в NSDocumentDirectory

Не намного больше, объяснение необходимо, но вот некоторые из моих (не удалось) пытается:
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]); 
} 

Два:

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]); 

на одном, я получил ошибку :

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

но это не имеет смысла, потому что изображение (на моем si te) существует.

На двоих, я получил ошибку:

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

+0

Необходимо много объяснений, начиная с ошибки, которую вы получаете. – Nifle

+1

Почему вы пытаетесь поместить изображение в строковую переменную? Почему вы пытаетесь сохранить файл .png как .jpg? –

ответ

4

То есть не путь к файлу - это URL для HTTP-ресурса. Для загрузки изображения вам необходимо использовать один из API-интерфейсов загрузки URL (например, NSURLDownload).

С кодом, который у вас есть в № 1, он ищет файл под названием «TabRight2.png», который находится в каталоге под названием «miniwidget.webs.com», который находится в каталоге под названием «http:», который находится в текущем каталоге и, конечно, не находит его.

Со вторым вы пытаетесь загрузить изображение в NSString. Трудно сказать, какая именно ошибка в этом случае, но это нецелесообразно и может быть преступником. NSStrings предназначены для текста, а изображения могут содержать последовательности, которые недопустимы как текст в любой кодировке. Вы должны использовать NSData для хранения двоичных данных, а не NSString.