我想在我的某个应用中设置tableview单元格图像。我使用AFNetworking (1.2.1)
,我使用setImageWithURLRequest
。
我设置图片的代码如下所示:
if (user.avatar) {
NSString *imageUrl = user.avatar.url;
[cell.profileImage setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[cell setNeedsLayout];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Error: %@", error);
}];
}
我的错误日志返回:
Error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x1f5b56a0 {NSErrorFailingURLKey=https://d2rfichhc2fb9n.cloudfront.net/image/5/Cf7T_BA6- NFGL5ah0w4hdvmk_Vp7InMiOiJzMyIsImIiOiJhZG4tdXNlci1hc3NldHMiLCJrIjoiYXNzZXRzL3VzZXIvZTIvM2MvMjA vZTIzYzIwMDAwMDAwMDAwMC5qcGciLCJvIjoiIn0}
图像不能设置。在我更新到AFNetworking (1.2.1)
之前,我没有遇到此问题。有任何想法吗?
更新
尝试从网址中删除空格,如下所示:
NSString *imageUrl = [user.avatar.url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
但我得到同样的错误。如果API某个时候包含一个包含空格的图像文件名,那么它可能会很危险。
答案 0 :(得分:20)
我看到三个问题:
-999表示NSURLErrorCancelled
,因此看起来URLRequest
会以某种方式被取消。这个代码在哪里? cell
对象或UIImageView
profileImage
是否可能过早发布?
如果您正在定义成功阻止,则AFNetworking的更新版本要求您自己设置图像。
确保网址有效。
试试这个(放在tableView:cellForRowAtIndexPath:
中时有效):
__weak UITableViewCell *weakCell = cell;
[cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
if (weakCell)
{
weakCell.imageView.image = image;
[weakCell setNeedsLayout];
}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Error: %@", error);
}];
答案 1 :(得分:4)
您的网址中似乎有一些额外的空间
您的网址是https://d2rfichhc2fb9n.cloudfront.net/image/5/Cf7T_BA6- NFGL5ah0w4hdvmk_Vp7InMiOiJzMyIsImIiOiJhZG4tdXNlci1hc3NldHMiLCJrIjoiYXNzZXRzL3VzZXIvZTIvM2MvMjA vZTIzYzIwMDAwMDAwMDAwMC5qcGciLCJvIjoiIn0
由于额外的空间,图片网址无效且无法获取。
修改强>
NSString *strCorrectUrl = [user.avatar.url stringByReplacingOccurrencesOfString:@" "
withString:@""];