我触发了图像的后台下载。它成功了 - 位置是实际图像的路径。我没有收到任何错误消息,但图片也没有显示在照片应用中。我已设置NSPhotoLibraryUsageDescription Info.plist键。该应用有权访问照片。我知道,这段代码触发了另一个后台线程,但这应该不是问题,因为“didFinishDownloadingTo”完成后“location”文件仍然存在。将JPG文件存储到相机胶卷时还有什么需要注意的吗?
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
PHPhotoLibrary.shared().performChanges({
print("starting")
let req = PHAssetCreationRequest.forAsset()
req.isFavorite = true;
let options = PHAssetResourceCreationOptions();
options.shouldMoveFile = true;
req.addResource(with: PHAssetResourceType.photo, fileURL: location, options: options)
})
}
答案 0 :(得分:3)
您未正确使用addResource
。你拥有的不是资源;这是形象。首先,从URL加载数据并将其转换为图像:
if let url = location, let d = try? Data(contentsOf:url) {
let im = UIImage(data:d)
}
现在只需将图片添加为资产:
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: im!)
})
你自己说服了那个有效的,你可以开始装扮它。