Получить изображение из XML URL и загрузить в UITableView

#iphone #xml #uitableview

#iPhone #xml #uitableview

Вопрос:

Я столкнулся с этой проблемой, и я бы попытался ее решить. в методе:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  

Я написал:

 NSMutableString *urlXML = [NSMutableString stringWithFormat:@"%@", [[elencoFeed objectAtIndex:indexPath.row]objectForKey:@"img"]];
NSMutableData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlXML]];
NSLog(@"imgdata: %@",imageData);
  

xml записывается как:

 <img>http://site/blu.png</img>
  

но проблема в том, что «urlXML» отвечает URL, который находится внутри тега XML
но «ImageData», он отвечает на журнал «(null)».

что я бы сделал, так это поместил внутри моего UITableView изображение для каждой строки. где я не прав?

Комментарии:

1. @Filippo убедитесь, что ваша строка urlXML не содержит тегов <img></img> XML. Вы также можете использовать initWithContentsOfURL:options:error: , передать ссылку на NSError, а затем проверить возвращенную ошибку.

2. NSLog из urlXML представляет собой простой URL без какого-либо <тега>

3. @Filippo Ты пробовал initWithContentsOfURL:options:error: ?

4. нет, можете ли вы опубликовать мне код, я не очень удобен, и я не знаю, как инициализировать строку

5. NSError * ошибка = ноль; NSMutableData *ImageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: urlXML] параметры: 0 ошибка:amp;error]; if (ошибка) { NSLog(@»ошибка %@, %@», ошибка, [ошибка userInfo]); }

Ответ №1:

Попробуйте обрезать и экранировать вашу строку urlXML следующим образом:

 // Assuming this returns a string with a valid URL (taken from question)
NSString *urlXML = [NSMutableString stringWithFormat:@"%@", [[elencoFeed objectAtIndex:indexPath.row]objectForKey:@"img"]];
// reading @Filippo's comments looks like the string returned contains trailing tabs and line breaks, let's trim it
NSString *trimmed = [urlXML stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *url = [NSURL URLWithString:[trimmed stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSData *imageData = [[NSData alloc] initWithContentsOfURL:url options:0 error:amp;error];
if (error) {
    NSLog(@"error %@, %@", error, [error userInfo]);
}
  

Комментарии:

1. ошибка Ошибка домена = NSCocoaErrorDomain Code = 256 «Операция не может быть завершена. (Ошибка Cocoa 256.)» userInfo = 0x4e33e80 {NSURL= site/ green.png

% 09 }, { NSURL = » site / green.png % 09
% 09
% 09
«; я получил эту ошибку сейчас! где эти «%..» выходят?

2. @Filippo эти «% …» возникли в результате экранирования строки. Вы уверены, что ваш URL-адрес действителен? Вы должны иметь возможность вставить свой URL в свой браузер и увидеть изображение.

3. конечно, если я вставлю URL-адрес в браузер, я увижу свой png, конечно, без всего этого . ссылка внутри xml — <img> <a rel="nofollow noreferrer noopener" href="https:///site.com/image.png site.com/image.png </img > как я писал в своем вопросе

4. @Filippo «ссылка внутри xml — <img>site.com/image.png </img> «… содержит ли строка urlXML теги <img></img>? Оно не должно содержать их.

5. нет, оно не содержит тега, пишем эту строку: [elencoFeed objectAtIndex:indexPath.row]objectForKey:@»img»] насколько я понимаю, я просто экстраполирую тег <img> внутрь, но из того, что я думаю,% — это моя проблема, потому что, если я создам urlXML журнала, он вернет мне мою ссылку с большим количеством пробелов