0
すべての画像と動画をPHAssetとして配列に取り込み、そのURLを取得しようとしています。コードの次の部分では、私はURLパスの拡張子を取得しようとしていますが、この行で私はエラーが発生しています。ビデオURL pathExtension find nil
var imagesAndVideos: PHFetchResult<PHAsset>!
let asset = imagesAndVideos!.object(at: indexPath.row)
func grabPhotos(){
let imgManager = PHImageManager.default()
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
fetchOptions.predicate = NSPredicate(format: "mediaType == %d || mediaType == %d",
PHAssetMediaType.image.rawValue,
PHAssetMediaType.video.rawValue)
imagesAndVideos = PHAsset.fetchAssets(with: fetchOptions)
}
var ext:String!
var url:NSURL!
imgManager.requestAVAsset(forVideo: asset, options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) in
DispatchQueue.main.async(execute: {
let myAsset = asset as! AVURLAsset
url = myAsset.url as NSURL
self.photoLibraryVideoUrl.append(url)
let videoData = NSData(contentsOf : url as URL)
self.videoDataArray.append(videoData!)
})
})
ext = "."+url.pathExtension!
self.nameArray.append(dateStringForFolder+ext)
それは、この行のnilであるURLを示しています:
ext = "."+url.pathExtension!
このエラーが毎回表示されません。私のコードは以下与えるです。私は(ext = "。" + url.pathExtension!)URLが価値を得る前にコードが実行されていると思います。どうすればこの問題を解決できますか?