使用RestKit从NSURL异步加载图像

时间:2012-03-21 06:14:15

标签: objective-c ios asynchronous uiimageview restkit

RestKit中是否有一个包装器或某种内置功能可以使用回调或块异步加载来自UIImage的{​​{1}}?我在NSURL文档中找不到这样的方法。如果没有,那么尽可能使用 RestKitNSURL 实施延迟加载的异步图像的好策略是什么?

2 个答案:

答案 0 :(得分:19)

不确定RestKit解决方案,但是SDWebImage是一个库,可以让你通过向UIImageView添加一个类别来异步加载图像,所以你要编写的就是这个(例如):

[myImageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

答案 1 :(得分:5)

使用RestKit,您可以使用RKRequest以下列方式加载图像数据:

RKRequest* request = [RKRequest requestWithURL: url];

request.onDidLoadResponse = ^(RKResponse* response) {
    UIImage* image = [UIImage imageWithData: response.body];
    // do something interesting with the image
};

request.onDidFailLoadWithError = ^(NSError* error) {
    // handle failure to load image
}

[imageLoadingQueue addRequest: request];

请注意,即使在onDidLoadResponse情况下,您也可能需要检查response以确保数据类型符合您的预期。上面使用的图像加载队列可以这样创建:

imageLoadingQueue = [RKRequestQueue requestQueueWithName: @"imageLoadingQueue"];
[imageLoadingQueue start];