【问题标题】:How to get URL for a PHAsset? [duplicate]如何获取 PHAsset 的 URL? [复制]
【发布时间】:2016-11-06 02:53:54
【问题描述】:

我正在使用第三方库从照片库中选择多个图像。在选择多个图像时,它会返回一个 PHAsset 对象数组。 现在,我想将这些对象的 URL(或一些引用)保存在核心数据中。但我不知道如何获取 URL。是否有任何其他参考可以存储在核心数据中,可以帮助我从照片库中获取相同的图像?

【问题讨论】:

    标签: ios core-data phasset


    【解决方案1】:

    我使用了@iMHitesh Surani 答案,它运行良好,我将其转换为 Swift 3.1 并将其放入 PHAsset 的扩展中,以便在任何地方使用该方法,这里是:

    extension PHAsset {
    
        func getURL(completionHandler : @escaping ((_ responseURL : URL?) -> Void)){
            if self.mediaType == .image {
                let options: PHContentEditingInputRequestOptions = PHContentEditingInputRequestOptions()
                options.canHandleAdjustmentData = {(adjustmeta: PHAdjustmentData) -> Bool in
                    return true
                }
                self.requestContentEditingInput(with: options, completionHandler: {(contentEditingInput: PHContentEditingInput?, info: [AnyHashable : Any]) -> Void in
                    completionHandler(contentEditingInput!.fullSizeImageURL as URL?)
                })
            } else if self.mediaType == .video {
                let options: PHVideoRequestOptions = PHVideoRequestOptions()
                options.version = .original
                PHImageManager.default().requestAVAsset(forVideo: self, options: options, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) -> Void in
                    if let urlAsset = asset as? AVURLAsset {
                        let localVideoUrl: URL = urlAsset.url as URL
                        completionHandler(localVideoUrl)
                    } else {
                        completionHandler(nil)
                    }
                })
            }
        }
    }
    

    【讨论】:

    • 不,因为资产本身就是调用该方法的人,所以他得到了所有需要的信息:)
    • @user3420180 试试selectedAssets[0].PHAsset.getURL() { url in ... your code to use url here}selectedAssets[0].getURL() { url in ... your code to use url here}
    • 我不会下载那个选择器。你的目标是什么?为什么需要你的资产 url?你的问题太模糊了。顺便说一句,这可能会帮助您理解它stackoverflow.com/a/43944769/2303865
    • 这有时会崩溃,contentEditingInput nil。有谁知道为什么会这样,在这种情况下我该怎么办?
    • 对于某些 PHAsset,它会将 AVUrlAsset 返回为 nil。有没有人遇到过同样的问题?
    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多