#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 журнала, он вернет мне мою ссылку с большим количеством пробелов