首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[UIImagePickerController.InfoKey.phAsset] as怎么可能?PHAsset为零

[UIImagePickerController.InfoKey.phAsset] as怎么可能?PHAsset为零
EN

Stack Overflow用户
提问于 2021-12-17 02:10:41
回答 1查看 328关注 0票数 1

我给一个用户发送了我的应用程序的TestFlight版本。她有一段用iPhone制作的视频。当imagePicker出现时,她选择了一段视频,而视频却以零的形式出现。我有一个数字120的错误消息,它出现在一个警报中,它告诉我错误发生在哪里。

它只能是资产[UIImagePickerController.InfoKey.phAsset] as? PHAssetnil。我看不出这是怎么可能的,因为这是她用手机制作的视频。奇怪的是,当她选择一张照片时,一切都很好,当我使用iOS 14和iOS 13选择视频时,一切都很好。

她上了iOS 15.1,我想知道这是什么问题吗?她是iOS的同事,她说iOS 15一直在制造问题。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2021-12-17 05:37:12

我不太确定资产如何为零,但根据这个answer by @Sh_Kahn,我需要处理所有的可能性:

代码语言:javascript
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70387678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档