1

我是 iphone 开发的菜鸟,我正在尝试将 SDWebImage 库实现到我的项目中。我的项目构建良好,但是当我显示我的表格视图时,我的应用程序崩溃并出现无效参数异常。我完全按照安装说明进行操作。我添加了 ImageIO 框架,添加了 -fobjc-arc 标志,因为我的项目是非 ARC,并导入了适当的标头。任何帮助是极大的赞赏。

我的例外

'NSInvalidArgumentException', reason: '-[UIImageView setImageWithURL:placeholderImage:]: unrecognized selector sent to instance 0x6e47d50'

我的代码

 // 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];
}

//Lazy Loader
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"mylogo.png"]];

// Configure the cell...

NSDictionary *aTweet = [tweets objectAtIndex:[indexPath row]];

cell.textLabel.text = [aTweet objectForKey:@"text"];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.font = [UIFont systemFontOfSize:12];
cell.textLabel.minimumFontSize = 10;
cell.textLabel.numberOfLines = 4;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

cell.detailTextLabel.text = [aTweet objectForKey:@"from_user"];

NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]];
NSData *data = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:data];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
4

1 回答 1

2

在该文件的顶部,您是否包含了 SDWebImage 标头,即:

#import <SDWebImage/UIImageView+WebCache.h>

(如果您使用的是 cocoapods .. 否则类似:)

#import "SDWebImage/UIImageView+WebCache.h"

或者

 #import "UIImageView+WebCache.h"

编辑:

为什么你在顶部有这个代码:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"mylogo.png"]];

当您在底部再次进行此设置时:

NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]];
NSData *data = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:data];

你不需要两者 - 也许删除底部不使用惰性加载器的代码?

于 2013-03-07T00:30:07.070 回答