You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SDWebImage加载assets-library本地图片URL显示为空的问题

解决SDWebImage加载assets-library URL图片为空的问题

嘿,这个问题我之前也踩过坑!核心原因是你用的assets-library://是iOS 8就被苹果弃用的旧资源定位方案,SDWebImage的默认加载器并不支持这个协议,所以才会出现加载后图片为空的情况。下面给你两个靠谱的解决办法:

方法一:手动通过Photos框架转换并加载图片

苹果现在推荐用Photos框架来访问本地图库资源,我们可以把旧的assets-library URL转换成PHAsset,再获取图片:

import Photos

// 封装一个转换并加载图片的方法
func loadImageFromAssetsURL(_ url: URL, into imageView: UIImageView) {
    // 用旧URL获取对应的PHAsset
    let fetchResult = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil)
    guard let asset = fetchResult.firstObject else {
        imageView.image = UIImage(named: "sampleImg")
        return
    }
    
    // 通过PHImageManager请求图片
    let imageManager = PHImageManager.default()
    let requestOptions = PHImageRequestOptions()
    requestOptions.deliveryMode = .highQualityFormat // 按需选择图片质量
    requestOptions.isNetworkAccessAllowed = false // 本地资源不需要网络权限
    
    // 设置适配imageView的图片尺寸
    let targetSize = imageView.bounds.size
    imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: requestOptions) { fetchedImage, _ in
        DispatchQueue.main.async {
            imageView.image = fetchedImage ?? UIImage(named: "sampleImg")
        }
    }
}

// 在cell配置代码里调用
loadImageFromAssetsURL(myImgObj[0].url, into: cell.productImageView)

方法二:使用SDWebImage的Photos扩展插件

SDWebImage官方提供了专门处理Photos资源的插件SDWebImagePhotosPlugin,集成后就能直接用你原来的代码加载assets-library URL了:

  1. 先在Podfile里添加依赖:
pod 'SDWebImage'
pod 'SDWebImagePhotosPlugin'
  1. 执行pod install更新项目依赖
  2. 代码里导入插件后,原来的加载代码就能正常工作:
import SDWebImage
import SDWebImagePhotosPlugin

// 直接用你原来的代码即可
cell.productImageView.sd_setImage(with: myImgObj[0].url, placeholderImage: UIImage(named: "sampleImg"))

额外建议

尽量不要再存储assets-library这种旧格式的URL了,苹果现在推荐存储PHAsset的localIdentifier,后续通过这个ID获取PHAsset会更稳定,也能避免版本兼容问题。

内容的提问来源于stack exchange,提问作者user8894520

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:25:17