Я использую библиотеку AssetsPickerViewController
для выбора кратного Videos
.Здесь я получаю массив [PHAsset]
:
func assetsPicker(controller: AssetsPickerViewController, selected assets: [PHAsset]) {
self.assets = assets
}
Когда я печатаю свой self.assets[0]
, я получаю вывод:
<PHAsset: 0x105230b40> 49185CD0-E5D7-4A84-BB75-38DB58C2EB20/L0/001 mediaType=2/0, sourceType=1, (1920x1080), creationDate=2018-03-17 02:35:36 +0000, location=0, hidden=0, favorite=0
Теперь моя проблема в том, когда я пытаюсьчтобы получить URL видео от self.assets[0]
, тогда мое приложение падает из-за нулевого актива.Я попробовал следующие решения, Все решения не работают для меня.
Соль 1:
PHCachingImageManager().requestAVAsset(forVideo: assets[0], options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) in
let asset = asset as! AVURLAsset
DispatchQueue.main.async {
print(asset.url)
}
} as! (AVAsset?, AVAudioMix?, [AnyHashable : Any]?) -> Void)
Соль 2:
PHImageManager.default().requestAVAsset(forVideo: self.assets[0], options: nil, resultHandler: { (asset, mix, nil) in
let myAsset = asset as? AVURLAsset
do {
let videoData = try Data(contentsOf: (myAsset?.url)!)
print("video data : \(videoData)")
} catch {
print("exception catch at block - while uploading video")
}
})
Соль 3:
PHImageManager.default().requestAVAsset(forVideo: assets[0], options: options, resultHandler: { (asset, audioMix, info) in
if let urlAsset = asset as? AVURLAsset {
let localVideoUrl = urlAsset.url
print("VIDEO URL: ", localVideoUrl)
} else {
//nil
}
})
Может кто-нибудь предложить мне здесь, я что-то здесь упускаю?