サードパーティのライブラリを使用して、フォトライブラリから複数の画像を選択しています。複数の画像を選択すると、PHAssetオブジェクトの配列を返します。次に、これらのオブジェクトのURL(またはいくつかの参照)をコアデータに保存します。しかし、私はURLを取得する方法がわかりません。フォトライブラリから同じ画像を取得するのに役立つ他の参照をコアデータに保存できますか?
私は @ 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)
}
})
}
}
}