AFNetworing – setImageWithURLRequest无效

我想在我的一个应用程序中设置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)之前,我没有这个问题。 有任何想法吗?

更新

试图从url中删除这样的空白:

 NSString *imageUrl = [user.avatar.url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

但是我得到同样的错误。 如果API有时候会包含一个包含空格的图像文件名,这可能会很危险。

我看到三个问题:

  1. -999意味着NSURLErrorCancelled ,所以它看起来像URLRequest被取消以某种方式。 你的代码在哪里? cell对象或UIImageView profileImage是否可能过早释放?

  2. 如果您正在定义成功块,AFNetworking的更新版本要求您自己设置图像。

  3. 确保url有效。

试试这个(当放在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); }]; 

你的url似乎有一些额外的空间

您的url是https://d2rfichhc2fb9n.cloudfront.net/image/5/Cf7T_BA6- NFGL5ah0w4hdvmk_Vp7InMiOiJzMyIsImIiOiJhZG4tdXNlci1hc3NldHMiLCJrIjoiYXNzZXRzL3VzZXIvZTIvM2MvMjA vZTIzYzIwMDAwMDAwMDAwMC5qcGciLCJvIjoiIn0

没有空间的url

由于额外的空间,图像的URL是无效的,并没有得到。

编辑

 NSString *strCorrectUrl = [user.avatar.url stringByReplacingOccurrencesOfString:@" " withString:@""];