NSData dataWithContentsOfURL

У меня есть такой способ нажатия кнопки (скачать). Проблема в том, что он завершается из-за исключения:

[Session started at 2011-03-14 13:06:45 +0530.]
2011-03-14 13:06:45.710 XML[7079:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[NSCFString isFileURL]: unrecognized selector sent to instance 0x62b8'
-(IBAction) download
{
    UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:@"http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif"]];
    [image release];
}

В чем проблема?


person Ketan Shinde    schedule 14.03.2011    source источник
comment
Почему вы выпускаете изображение? Вы не распределяете его.   -  person visakh7    schedule 14.03.2011
comment
это было по ошибке !!! мой URL не попадает в uiimage. UIImage image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [jsonItem objectForKey: @PictureURL]]]; ошибка: *** Завершение работы приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «** - [NSCFString isFileURL]: нераспознанный селектор отправлен в экземпляр 0xd552c0»   -  person Ketan Shinde    schedule 14.03.2011


Ответы (2)


Он ожидает в качестве аргумента NSURL, а не строку.

UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif"]]];

РЕДАКТИРОВАТЬ:

Чтобы проверить, успешно ли загружены данные, попробуйте что-нибудь вроде

NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:yourURL options:NSDataReadingUncached error:&error];
if (error) {
    NSLog(@"%@", [error localizedDescription]);
    [error release];
} else {
    NSLog(@"Data has loaded successfully.");
}
person hennes    schedule 14.03.2011
comment
На самом деле в моем коде я получаю URL-адрес из {NSURL * jsonURL = [NSURL URLWithString: [jsonItem objectForKey: @PictureURL]]; } {NSLog (@% @, [jsonItem objectForKey: @PictureURL]);} также выводит правильный URL-адрес, но при использовании кода {UIImage * image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: string]]];} отображается ошибка (уже объяснено) - person Ketan Shinde; 14.03.2011
comment
Хм, в этом нет смысла. Какое точное сообщение об ошибке вы получите после вызова UIImage * image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: string]]] ;? - person hennes; 14.03.2011
comment
когда я попробовал это: UIImage image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [jsonItem objectForKey: @PictureURL]]]; это дает ошибку: 2011-03-14 15: 19: 42.119 XML [8388: 20b] *** Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '** - [NSCFString isFileURL]: нераспознанный селектор отправлено экземпляру 0xd54bc0 '2011-03-14 15: 19: 42.121 XML [8388: 20b] Стек: (807902715,) - person Ketan Shinde; 14.03.2011
comment
Вам нужно вызвать UIImage image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: [jsonItem objectForKey: @PictureURL]]]]; - person hennes; 14.03.2011
comment
когда я пробовал этот код, он передавал null в изображение !! 2011-03-14 15: 23: 50.999 XML [8447: 20b] изображение .... (null) 2011-03-14 15: 23: 51.000 XML [8447: 20b] ширина ..... 0,000000, высота. .... 0,000000 - person Ketan Shinde; 14.03.2011
comment
Можете ли вы попробовать + (id) dataWithContentsOfURL: (NSURL *) aURL options: (NSDataReadingOptions) mask error: (NSError **) errorPtr, чтобы узнать, произошла ли ошибка при извлечении данных из URL-адреса? - person hennes; 14.03.2011
comment
Если у вас версия iOS меньше 4.0, вам нужно вместо этого использовать NSUncachedRead. - person hennes; 14.03.2011
comment
в порядке!! его исключение в gdb: - [NSCFString isFileURL]: неопознанный селектор отправлен в экземпляр 0x3d678c0 ' - person Ketan Shinde; 15.03.2011
comment
Как все вам говорили, вам нужно вставить экземпляр NSURL, а не NSString. - person hennes; 15.03.2011
comment
выпуск ошибки вызовет исключение в приведенном выше коде - person dijipiji; 27.09.2014

Метод dataWithContentsOfURL принимает NSURL в качестве аргумента, а не NSString

[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif"]]
person j_freyre    schedule 14.03.2011