2016-07-04 2 views
7

타사 라이브러리를 사용하여 사진 라이브러리에서 여러 이미지를 선택하고 있습니다. 여러 이미지를 선택하면 PHAsset 객체의 배열을 반환합니다. 이제 이러한 개체에 대한 URL (또는 일부 참조)을 핵심 데이터에 저장하려고합니다. 하지만 URL을 얻는 방법을 모르겠습니다. 사진 자료실에서 같은 이미지를 가져 오는 데 도움이 될 수있는 핵심 데이터에 저장할 수있는 다른 참조가 있습니까?PHAsset의 URL을 가져 오는 방법은 무엇입니까?

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) 
       } 
      }) 
     } 
    } 
} 

답변

10

나는 Hitesh 대답 surani 사용하고 완벽했다. 그러나 그것을 사용하는 방법?
+0

감사 : 여기있다, 내가 스위프트 3.1로 변환 사방이 방법을 사용하기 위해 PHAsset의 확장에 넣어, – rick

+0

프로젝트에이 코드가있는 PHAssetExtension.swift 파일을 추가하면 모든 곳에서 asset.getUrl ...을 수행해야하는 PHAsset 객체가 생깁니다. – diegomen

+0

getURL에 매개 변수가 필요하지 않습니까? – rick