2013-05-04 30 views
5

我想在我的一个应用程序中设置tableview单元格图像。我用AFNetworking (1.2.1),我用setImageWithURLRequest来做。AFNetworing - 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有时候会包含一个包含空格的图像文件名,这可能会很危险。

回答

20

我看到三个问题:

  1. -999意味着NSURLErrorCancelled,所以它看起来像URLRequest被莫名其妙地取消了。你的代码在哪里?是否有可能过早释放了cell对象或UIImageViewprofileImage

  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); 
}]; 
+1

谢谢,这工作!将它移动到'tableView:cellForRowAtIndexPath'。 – Anders 2013-05-04 08:25:18

+0

你的答案拯救了我的一天....谢谢.... – Manoj 2014-09-26 10:22:10

+0

这段代码是否创建了保留周期?我敢肯定块会保留单元格,但是单元格保留块吗? – 2015-05-06 11:06:08

4

似乎有一些额外的空间,在您的网址

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

Url Without Space

由于额外空间的图片网址是无效的,它没有得到牵强。

编辑

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

试图剥去空白,但它并没有帮助。查看更新的答案。 – Anders 2013-05-04 08:11:59