AFNetworing - setImageWithURLRequest不工作

And*_*ers 5 cocoa-touch objective-c ios 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);
        }];
    } 
Run Code Online (Sandbox Code Playgroud)

我的错误日志返回:

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}
Run Code Online (Sandbox Code Playgroud)

图像不能设置.在我更新之前我没有遇到这个问题AFNetworking (1.2.1).有任何想法吗?

更新

试图从网址中删除空格,如下所示:

NSString *imageUrl = [user.avatar.url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误.如果API某个时候包含一个包含空格的图像文件名,那么它可能会很危险.

And*_*Ley 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);
}];
Run Code Online (Sandbox Code Playgroud)