J'utilise une bibliothèque tierce pour sélectionner plusieurs images dans la photothèque. Lors de la sélection de plusieurs images, il renvoie un tableau d'objets PHAsset. Maintenant, je veux enregistrer l'URL (ou une référence) pour ces objets dans les données de base. Mais je ne sais pas comment obtenir l'URL. Y a-t-il une autre référence que je pourrais stocker dans les données de base qui pourrait m'aider à récupérer la même image dans la photothèque?
J'ai utilisé @ iMHitesh Surani réponse et cela a fonctionné parfaitement, je l'ai converti en Swift 3.1 et l'ai mis dans une extension de PHAsset afin d'utiliser cette méthode partout, ici c'est:
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)
}
})
}
}
}