如何确定设备上是否有原始照片资产?

时间:2019-02-03 03:17:36

标签: ios phasset photosframework photokit

PHAssetChangeRequest's revertAssetContentToOriginal()的文档具有以下重要说明:

  

如果资产的原始内容不可用,则此请求失败   在当前设备上(例如,如果启用了iCloud照片库   并且用户已在其他设备上编辑了资产)。采用   PHAssetResourceManager以确保原始资产内容是   发出此请求之前,请先下载到当前设备。

我可以通过在iPad上编辑照片并尝试在iPhone上还原照片来轻松重现所描述的故障。

我的问题是,如何确定原始资产内容是否已下载到当前设备?

我认为我可以请求资产的原始资源,如果资源可用,它将立即调用完成模块,但是我发现情况并非如此。当我拍摄新照片时,对其进行编辑,然后再在同一设备上将其还原,则需要互联网连接才能下载原始内容-不会立即调用完成框。但是我知道原始内容是可用的,因为如果我在不首先请求原始内容的情况下调用revertAssetContentToOriginal(),它将成功。

let resource = PHAssetResource.assetResources(for: asset).first(where: { $0.type == .photo })

let options = PHAssetResourceRequestOptions()
options.isNetworkAccessAllowed = true

PHAssetResourceManager.default().requestData(for: resource, options: options, dataReceivedHandler: { data in
    //nothing to see here
}) { error in
    if let error = error {
        //...
    } else {
        PHPhotoLibrary.shared().performChanges({
            let request = PHAssetChangeRequest(for: asset)
            request.revertAssetContentToOriginal()
        }) { (success, error) in
            //...
        }
    }
}

0 个答案:

没有答案