问题描述
我得到了一个 URL,我需要从中提取图像。图片为 PNG,但 URL 如下所示:
http://something.../something.zip
如果我在 safari 中打开这个 URL,它会自动下载一个 PNG。但是,当我尝试加载我的程序时,我得到了一个 nil UIImage 对象。
我的代码:
- (void)fetchImageFromURL: (Nsstring *)urlString {
NSURL *url = [NSURL URLWithString:urlString];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data,NSURLResponse * _Nullable response,NSError * _Nullable error) {
if (error) {
NSLog(@"%@",error.localizedDescription);
} else {
if (data) {
UIImage *image = [UIImage imageWithData: data];
if (image) {
[self.randomImageImageView setimage: image];
} else {
NSLog(@"Image is nil.");
}
} else {
NSLog(@"Could not retrieve data.");
}
}
}];
[task resume];
}
解决方法
这是因为 Safari 会自动解压缩小于特定大小的 zip 文件。这意味着您需要先以编程方式解压缩文件,然后从那里找到您的图像。