脱机时使用SDWebImageView缓存问题并使用百分比转义的URL

时间:2014-04-15 08:56:19

标签: ios objective-c sdwebimage nsurlcache

我正在使用SDWebImage异步显示图像,并缓存它们,然后在离线模式下获取它们。

我在使用离线模式时遇到SDWebImageDownloaderUIImageView+WebCache缓存问题,只有在处理转义百分比的网址时才出现此问题,这些网址包含一些特殊字符,例如' {& #39;

在线模式下一切正常,但在离线模式下,未加载包含%转义的网址的图片

[myImageView setImageWithURL:[urlImage percentEscapedURL]
                   completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                       //image here is loaded in offline mode only if its URL does not need percent escapes
                   }];

SDWebImageDownloader相同的问题。

我尝试调试SDImageView行为,似乎它使用的是iOS SDK NSCachedURLResponse行为。

我正在使用iOS版<{3}}进行测试

任何人都有同样的问题吗?任何解决方法?

1 个答案:

答案 0 :(得分:1)

SDWebImage在SDWebImageManager.h中声明了一些属性:

@property (strong) NSString *(^cacheKeyFilter)(NSURL *url);

相应文件中包含此属性的说明:

/**
 * The cache filter is a block used each time SDWebImageManager need to convert an URL into a cache key. This can
 * be used to remove dynamic part of an image URL.
 *
 * The following example sets a filter in the application delegate that will remove any query-string from the
 * URL before to use it as a cache key:
 *
 * @code

[[SDWebImageManager sharedManager] setCacheKeyFilter:^(NSURL *url) {
    url = [[NSURL alloc] initWithScheme:url.scheme host:url.host path:url.path];
    return [url absoluteString];
}];

 * @endcode
 */

我认为您可以尝试对相应的代码进行一些更改。