AFNetworing - setImageWithURLRequest不工作

时间:2013-05-04 07:41:38

标签: ios objective-c cocoa-touch afnetworking

我想在我的某个应用中设置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某个时候包含一个包含空格的图像文件名,那么它可能会很危险。

2 个答案:

答案 0 :(得分:20)

我看到三个问题:

  1. -999表示NSURLErrorCancelled,因此看起来URLRequest会以某种方式被取消。这个代码在哪里? cell对象或UIImageView profileImage是否可能过早发布?

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

  3. 确保网址有效。

  4. 试试这个(放在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

Url Without Space

由于额外的空间,图片网址无效且无法获取。

修改

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