我正在使用AssetsPickerController
中的Swift
从Videos
中选择多个Device gallery
。
问题:当我选择多个Videos
或有时选择单个video
时,有时由于App
为空,我的Video Asset
崩溃了。在100次测试中,这种情况发生5到10次。
码:
@IBAction func openAssetsAction(_ sender: UIButton) {
let rootListAssets = AssetsPickerController()
rootListAssets.didSelectAssets = {(assets: Array<PHAsset?>) -> () in
for i in 0..<assets.count {
let myPHAsset = assets[i]
let options = PHVideoRequestOptions()
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true
options.progressHandler = { (progress, error, stop, info) in
print("progress: \(progress)")
}
PHImageManager.default().requestAVAsset(forVideo: myPHAsset!, options: options, resultHandler: { (asset, audioMix, info) in
if let urlAsset = asset as? AVURLAsset {
let localVideoUrl = urlAsset.url
print(localVideoUrl)
}
})
}
}
let navigationController = UINavigationController(rootViewController: rootListAssets)
present(navigationController, animated: true, completion: nil)
}
我尽力在StackOverFlow中找到类似的问题,并得到了一些建议,他们建议使用
isNetworkAccessAllowed
,但是在设置isNetworkAccessAllowed
之后,仍然会得到nil Asset
。 最佳答案
首先,您不应在此处forVideo: myPHAsset!
强制拆开资产
guard
let myPHAsset = assets[i]
else {
return
}
然后尝试将deliveryMode设置为自动:
options.deliveryMode = .automatic
编辑:
要强制下载资产,我们需要指定版本:
options.version = .original
关于ios - 如何用AssetsPickerController iOS中的PHImageManager解决空 Assets 问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55488998/