5

我想在我的一个应用程序中设置表格视图单元格图像。我使用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 有时会包含包含空格的图像文件名,这可能会很危险。

4

2 回答 2

20

我看到三个问题:

  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);
}];
于 2013-05-04T08:15:22.540 回答
4

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

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

没有空格的网址

由于额外的空间,图像 url 无效并且无法获取。

编辑

NSString *strCorrectUrl = [user.avatar.url stringByReplacingOccurrencesOfString:@" "
                                 withString:@""];
于 2013-05-04T07:56:41.150 回答