uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针
uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针
操作步骤:
- plus.gallery.pick选择单张照片,选择一张照片,点击完成
预期结果:
- 返回上传图片
实际结果:
- 崩溃,空指针
bug描述:
plus.gallery.pick选择照片,崩溃如图所示,选择单张照片,点击完成即崩溃,日志如下:
2021-08-31 18:40:10.668521+0800 TeacherTrain[44665:14670327] Failed to load font: 未能完成操作。(com.apple.CoreText.CTFontManagerErrorDomain错误105 - Could not register the CGFont '<CGFont (0x2818e4200): io_dcloud_5app_titlenview_iconfont>')
2021-08-31 18:40:16.870056+0800 TeacherTrain[44665:14670327] Metal GPU Frame Capture Enabled
2021-08-31 18:40:16.877098+0800 TeacherTrain[44665:14670327] Metal API Validation Enabled
2021-08-31 18:40:16.954915+0800 TeacherTrain[44665:14670327] fopen failed for data file: errno = 2 (No such file or directory)
2021-08-31 18:40:16.955122+0800 TeacherTrain[44665:14670327] Errors found! Invalidating cache...
2021-08-31 18:40:17.038534+0800 TeacherTrain[44665:14671327] Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[<NSArrayM insertObject:atIndex:]: object cannot be nil'
First throw call stack:
(0x1a899e708 0x1bd4a87a8 0x1a8a109c8 0x1a8a0df4c 0x1a8877b5c 0x10573a5e0 0x10573a84c 0x105b5e0ec 0x105b60990 0x114c7c0b4 0x114c7dde0 0x114c80ed0 0x114c801d8 0x114c91e30 0x114c927ec 0x1f472a768 0x1f473174c)
libc++abi: terminating with uncaught exception of type NSException
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[<NSArrayM insertObject:atIndex:]: object cannot be nil'
terminating with uncaught exception of type NSException

| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| PC开发环境操作系统 | Windows | |
| PC开发环境操作系统版本号 | 10 | |
| 手机系统 | iOS | |
| 手机系统版本号 | IOS 14 | |
| 手机厂商 | 苹果 | |
| 手机机型 | 12 pro max | |
| 页面类型 | vue | |
| 打包方式 | 离线 | |
| 项目创建方式 | HBuilderX |
更多关于uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针的实战教程也可以访问 https://www.itying.com/category-93-b0.html
复现的代码或者demo发一下
更多关于uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用官方基座测试下,我这边没有复现问题
这个问题通常是由于iOS系统在访问相册时,某些照片的元数据(如地理位置、拍摄信息等)为nil,导致在插入数组时引发空指针异常。以下是几种解决方案:
-
更新HBuilderX和uni-app原生插件:确保使用最新版本的HBuilderX(建议3.2.13+)和对应的uni-app原生插件,官方可能已修复此问题。
-
检查相册权限配置:在
manifest.json中确认已正确配置相册访问权限(NSPhotoLibraryUsageDescription),并描述使用目的。 -
使用临时解决方案:在调用
plus.gallery.pick时,尝试添加multiple: false参数,并确保在回调函数中处理可能的空值:plus.gallery.pick(res => { if (res && res.files && res.files.length > 0) { // 处理图片 } }, err => { console.error('选择失败:', err); }, { multiple: false }); -
检查自定义字体:日志中提示字体加载失败(
io_dcloud_5app_titlenview_iconfont),可能是自定义字体文件缺失或路径错误,移除或修复字体配置有时可间接解决此问题。 -
降级测试:如果问题仅出现在iOS 14+,可尝试在
manifest.json的iOS配置中设置targetSdkVersion为较低版本(如13),但需注意可能影响新功能支持。 -
使用uni.chooseImage替代:考虑使用跨端的
uni.chooseImageAPI,它封装了底层差异,可能避免此问题:uni.chooseImage({ count: 1, success: (res) => { // 处理图片 } });

