iOS 11使用UIDocument创建文档时出现URL访问权限错误
iOS 11 UIDocument save() 抛出权限错误但文件创建成功的问题解析
我之前在做iOS11适配时碰到过一模一样的情况,先给你吃个定心丸:这个错误只是iOS 11系统内部的一个无关报错,完全不会影响你的文件创建、读写逻辑。
问题原因
这个错误来自NSFileProviderInternalErrorDomain,本质是iOS11在引入文件提供者框架(File Provider Framework)等新特性时,内部权限检查逻辑出现了一个小bug。当你直接使用UIDocument的save()方法保存到Documents目录时,系统会错误地触发一轮不必要的权限校验,但实际上你的App对Documents目录拥有完全的读写权限——这一点从文件能成功创建就能直接证明。
结合你的场景验证
- 你没有使用
UIDocumentBrowserViewController,所以和文档浏览器相关的配置(比如UISupportsDocumentBrowser键)完全不相关,添加它自然解决不了问题; - 你已经配置了正确的UTI,且AirDrop传输能正常触发App打开,说明UTI的配置没有问题;
- iOS10完全无此错误,进一步坐实了这是iOS11的专属系统问题。
处理建议
- 直接忽略日志:既然不影响功能,这个错误日志完全可以不用管;
- 过滤特定错误:如果看着日志闹心,可以在代码里针对这个错误做过滤。比如在
save()的回调里,或者通过监听错误日志的方式,忽略NSFileProviderInternalErrorDomain且Code=1的错误; - 升级系统版本:这个问题在iOS12及以上版本已经被苹果修复,用户升级系统后就不会再看到这个错误了。
你的代码逻辑是完全正确的,不用因为这个错误日志修改核心逻辑~
内容的提问来源于stack exchange,提问作者HuaTham
相关产品推荐
相关产品推荐

