Code=1 "Operation not permitted"

具体报错如下:

Error: Error Domain=NSCocoaErrorDomain Code=257 "未能打开文件“IMG_0040.mp4”,因为您没有查看它的权限。" UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0040.mp4, NSUnderlyingError=0x2802bf990 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}} Optional(["NSFilePath": /var/mobile/Media/DCIM/100APPLE/IMG_0040.mp4, "NSUnderlyingError": Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"]) 未能打开文件“IMG_0040.mp4”,因为您没有查看它的权限。

正常情况下 IOS是不能直接通过路径地址去访问相册里面的内容的(小生以前没注意),直到发现如下一种case:

  正常情况下通过PhAsset 获取到相册的Assert 然后通过转换成AVURLAsset 可以得到URL,然后得到地址,这个时候通过这个地址是可以正常访问文件的,恰好我有个上传服务器的需求,模拟突然中断后,后续继续上传的场景,当我通过杀掉APP,然后重新打开上传这个资源是,就报出了如上的错误,奇怪的是视频播放通过这个地址去实例化URL的资源,视频能够正常播放,就是自己用FileManage 去获取这个文件的信息就报错了。各种调试 比对路径,确认没问题后就FQgoogle,一样没有找到原因,后来无意中记起不能通过路径去反问相册,但是之前明明用的好好的。这时候才意识到,会不会只要我调用了获取相册的接口,就可以通过路径来访问了。马上测试了一下,果然,我就只打开以前的选择图像的界面,不选择任何资源,关掉页面重新回来上传,这个时候就可以正常通过路径来访问这个文件并上传了。

记下让其他一样被困扰的猿们能解决自己的困扰,还是我使用的方式不对,得到相册资源后就应该保存到沙盒中。

原文地址:https://www.cnblogs.com/Purk/p/11760737.html