如何从rss条目中检索图像?

时间:2013-02-28 11:59:39

标签: uitableview ios5 xcode4.2 tablerow

我目前正在开发一个新闻应用程序,并且非常希望将图像添加到新闻文章图像的表格行中。

我已设法解析其他所有内容,只是我无法解析图片网址。

这是我用来从Feed中去除HTML的代码。

.M文件

- (NSString *)stringByStrippingHTML:(NSString *)inputString 
{
NSMutableString *outString;

if (inputString)
{
    outString = [[NSMutableString alloc] initWithString:inputString];

    if ([inputString length] > 0)
    {
        NSRange r;

        while ((r = [outString rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
        {
            [outString deleteCharactersInRange:r];
        }      
    }
}

return outString; 

}

.H文件

- (NSString *)stringByStrippingHTML:(NSString *)inputString;

我对xcode和代码都很陌生,所以我对这些东西并不熟悉。

我无法弄清楚解析图片的网址。

这是tablerow外观的代码。

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.numberOfLines=3;
cell.detailTextLabel.numberOfLines=4;


RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate];

NSString * articleDescrptionString = [[[NSString alloc] init] autorelease];
articleDescrptionString = entry.articleDescription;

cell.textLabel.text = entry.articleTitle; 

NSString *plainString = [self stringByStrippingHTML:entry.articleDescription ];

cell.imageView.image = [UIImage imageNamed: entry.articleImageUrl];

//NSString *rangedString = [plainString substringToIndex:249];  //0 to 249 makes it 250 characters

//cell.detailTextLabel.text = articleDescrptionString;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ - %@", articleDateString, plainString];

//UIImage *theImage = [UIImage imageWithContentsOfFile:entry.articleImageUrl];
//cell.imageView.image = theImage;

return cell;
}

我注释掉的任何代码目前都没有被使用过。

1 个答案:

答案 0 :(得分:0)

您需要先将图像加载到NSData对象中......

NSURL *imgURL = [NSURL URLWithString:entry.articleImageUrl];
NSData *imgData = [NSData dataWithContentsOfURL:imgURL];
cell.imageView.image = [UIImage imageWithData:imgData];

但是你必须异步执行它,因为如果你在没有延迟图像加载的情况下执行它,那么在滚动时TableView将会存货......