Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从http更改为https后,SDWebImage未下载映像_Objective C_Sdwebimage - Fatal编程技术网

Objective c 从http更改为https后,SDWebImage未下载映像

Objective c 从http更改为https后,SDWebImage未下载映像,objective-c,sdwebimage,Objective C,Sdwebimage,我的项目中有一个带有图像的表 图像url以http开头: 在tableView cellForRowAtIndexPath中,我使用此方法下载每个单元格的图像 - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlo

我的项目中有一个带有图像的表

图像url以http开头:

在tableView cellForRowAtIndexPath中,我使用此方法下载每个单元格的图像

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock {
[self sd_cancelCurrentImageLoad];
objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

if (!(options & SDWebImageDelayPlaceholder)) {
    dispatch_main_async_safe(^{
        self.image = placeholder;
    });
}

if (url) {

    // check if activityView is enabled or not
    if ([self showActivityIndicatorView]) {
        [self addActivityIndicator];
    }

    __weak __typeof(self)wself = self;
    id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
        [wself removeActivityIndicator];
        if (!wself) return;
        dispatch_main_sync_safe(^{
            if (!wself) return;
            if (image && (options & SDWebImageAvoidAutoSetImage) && completedBlock)
            {
                completedBlock(image, error, cacheType, url);
                return;
            }
            else if (image) {
                wself.image = image;
                [wself setNeedsLayout];
            } else {
                if ((options & SDWebImageDelayPlaceholder)) {
                    wself.image = placeholder;
                    [wself setNeedsLayout];
                }
            }
            if (completedBlock && finished) {
                completedBlock(image, error, cacheType, url);
            }
        });
    }];
    [self sd_setImageLoadOperation:operation forKey:@"UIImageViewImageLoad"];
} else {
    dispatch_main_async_safe(^{
        [self removeActivityIndicator];
        if (completedBlock) {
            NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Trying to load a nil url"}];
            completedBlock(nil, error, SDImageCacheTypeNone, url);
        }
    });
}
  }
-(void)sd_setImageWithURL:(NSURL*)url占位符图像:(UIImage*)占位符选项:(SDWebImageOptions)选项进度:(SDWebImageDownloaderProgressBlock)进度块已完成:(SDWebImageCompletionBlock)已完成块{
[self sd_cancelCurrentImageLoad];
objc_setAssociatedObject(self,&imageURLKey,url,objc_ASSOCIATION_RETAIN_NONATOMIC);
if(!(选项和SDWebImageDelayPlaceholder)){
调度\u主\u异步\u安全(^{
self.image=占位符;
});
}
如果(url){
//检查是否启用了activityView
if([自显示活动指示灯视图]){
[自添加活动指示器];
}
__弱(自我)类型wself=自我;
id操作=[SDWebImageManager.sharedManager下载ImageWithURL:url选项:选项进度:progressBlock完成:^(UIImage*image,NSError*error,SDImageCacheType cacheType,BOOL finished,NSURL*imageURL){
[wself removeActivityIndicator];
如果(!wself)返回;
调度主同步安全(^{
如果(!wself)返回;
if(图像和(选项和SDWebImageAvoidAutoSetImage)和完成块)
{
completedBlock(图像、错误、缓存类型、url);
返回;
}
else if(图像){
wself.image=图像;
[wself setNeedsLayout];
}否则{
if((选项和SDWebImageDelayPlaceholder)){
wself.image=占位符;
[wself setNeedsLayout];
}
}
if(已完成的块和已完成的(&F){
completedBlock(图像、错误、缓存类型、url);
}
});
}];
[self-sd_setImageLoadOperation:operation forKey:@“UIImageViewImageLoad”];
}否则{
调度\u主\u异步\u安全(^{
[自主活动指示器];
if(完成块){
NSError*error=[NSErrorWithDomain:SDWebImageErrorDomain代码:-1用户信息:@{NSLocalizedDescriptionKey:@“正在尝试加载一个无url”}];
completedBlock(无,错误,SDImageCacheTypeNone,url);
}
});
}
}
在普利斯特,我有这个 NSAllowsArbitraryLoads

当我从Plist文件中删除NSAllowsArbitraryLoads时,问题就开始了 并将url改为https:一些图片下载,一些不下载

有什么问题吗?

在我的应用程序(一个旧的)中,我有一些图片要下载。 当我尝试使用SDWebImage执行此操作时,没有结果

我的解决方案是将我的图像url复制到safari,然后获取直接url并使用它

我认为问题在于重定向url,当存在重定向url时,SDWebImage无法下载此图像

试试看,让我知道我自己是否有正确的答案:)