XCode 9.2选择照片填充UIImageView时出现PlugInKit Code=13错误
解决Xcode 9.2中选择照片填充UIImageView时的PlugInKit Code=13错误
我之前也碰到过一模一样的问题——在Xcode 9.2里用照片选择器选图,模拟器能正常打开相册,但点「Choose」就弹出[discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled"错误,选择器直接关闭,图片也加载不出来。其实这个错误很多时候是个“假警报”,但背后确实有我们配置或代码上的小问题,下面是几个亲测有效的解决办法:
1. 检查Info.plist的照片权限配置
这是最常见的原因!iOS要求必须声明访问照片库的理由,否则会导致选择器异常退出:
- 打开项目的
Info.plist,添加NSPhotoLibraryUsageDescription键(如果需要写入照片库,还要加NSPhotoLibraryAddUsageDescription) - 给键设置一个非空的字符串值,比如
"需要访问您的照片库来选择头像",描述要清晰说明用途,不能为空。
2. 确认UIImagePickerController的代理实现完整
UIImagePickerController依赖两个代理,少一个都可能出问题:
- 确保你的ViewController遵守
UIImagePickerControllerDelegate和UINavigationControllerDelegate协议 - 必须实现两个关键代理方法:
注意:如果没实现取消的代理方法,也可能导致选择器的生命周期异常。// 处理用户选择照片的逻辑 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { // 取出选中的图片并赋值给UIImageView if let selectedImage = info[.originalImage] as? UIImage { yourImageView.image = selectedImage } // 一定要手动dismiss选择器 picker.dismiss(animated: true, completion: nil) } // 处理用户取消选择的情况 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { picker.dismiss(animated: true, completion: nil) }
3. 清理项目缓存并重启环境
有时候Xcode的缓存会引发各种奇怪的插件问题,试试这些操作:
- 清理Derived Data:打开Xcode的
Preferences > Locations,找到Derived Data的路径,点击箭头打开文件夹后删除整个目录 - 清理项目:按下
Command + Shift + K清理构建文件,再按Command + Option + Shift + K清理构建文件夹 - 重启Xcode和模拟器,必要时重启电脑,很多小问题都能通过这个解决。
4. 验证模拟器的App权限设置
虽然你说模拟器能打开相册,但还是确认一下权限是否正确:
- 打开模拟器的
Settings > 你的App名称 > Photos - 确保权限设置为
Read & Write或者Read Only(根据你的需求),如果是Never的话,选完照片后就会直接退出选择器。
这个PlugInKit Code=13错误本质是系统在查询照片扩展时被中断,但核心问题基本都在上面几个点里,按顺序排查应该就能解决啦!
内容的提问来源于stack exchange,提问作者sixstringsteph
相关产品推荐
相关产品推荐

