我给一个用户发送了我的应用程序的TestFlight版本。她有一段用iPhone制作的视频。当imagePicker出现时,她选择了一段视频,而视频却以零的形式出现。我有一个数字120的错误消息,它出现在一个警报中,它告诉我错误发生在哪里。
它只能是资产[UIImagePickerController.InfoKey.phAsset] as? PHAsset是nil。我看不出这是怎么可能的,因为这是她用手机制作的视频。奇怪的是,当她选择一张照片时,一切都很好,当我使用iOS 14和iOS 13选择视频时,一切都很好。
她上了iOS 15.1,我想知道这是什么问题吗?她是iOS的同事,她说iOS 15一直在制造问题。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
let asset = info[UIImagePickerController.InfoKey.phAsset] as? PHAsset
// ...
if let style = asset?.playbackStyle {
// ...
// if it entered here then the below alert would have never appeared
} else {
let errorMessage = "Error: 120"
let alert = UIAlertController(title: "Unknown Error", message: errorMessage, preferredStyle: .alert)
// ...
}
imagePicker?.dismiss(animated: true, completion: nil)
}FYI之后,我刚刚在iOS 15.1上测试了一些视频,而且效果很好。
我试过了PHPickerController,但它很好用,所以我现在还是坚持使用ImagePicker。
发布于 2021-12-17 05:37:12
我不太确定资产如何为零,但根据这个answer by @Sh_Kahn,我需要处理所有的可能性:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let asset = info[UIImagePickerController.InfoKey.phAsset] as? PHAsset {
let style = asset.playbackStyle
// ...
} else if let videoURL = info[UIImagePickerController.InfoKey.mediaURL] as? URL {
// ...
} else if let imageUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL {
// ...
} else {
let errorMessage = "Error: 120"
let alert = UIAlertController(title: "Unknown Error", message: errorMessage, preferredStyle: .alert)
// ...
}
imagePicker?.dismiss(animated: true, completion: nil)
}https://stackoverflow.com/questions/70387678
复制相似问题