读取相册中的视频报错 Error Domain=NSCocoaErrorDomain Code=257

读取相册中的视频报错 :Error Domain=NSCocoaErrorDomain Code=257

存在这个问题是因为iOS系统13版本系统和13以下的版本系统存在获取视频文件路径差异:
iOS13及以上:
file:///private/var/mobile/Containers/Data/PluginKitPlugin/78237EE6-E473-4A7D-B70B-30517BEED40C/tmp/trim.DB7DD483-045E-490C-9685-7BEC69BAB97A.MOV"
iOS13以下:
file:///private/var/mobile/Containers/Data/Application/78237EE6-E473-4A7D-B70B-30517BEED40C/tmp/trim.DB7DD483-045E-490C-9685-7BEC69BAB97A.MOV"
一个是PluginKitPlugin,一个是Application,这就有很大区别了,根据iOS系统的沙盒原理,前者除了本应用其他肯定是无法访问的。

解决方案:
通过startAccessingSecurityScopedResource和stopAccessingSecurityScopedResource方法来获取URL的访问权

代码如下:

BOOL isAcccessing = [url startAccessingSecurityScopedResource];
NSError* error = nil;
NSString *path = [url path];
NSData *data = [NSData dataWithContentsOfFile:path options: 0 error: &error];
if(data == nil) {
    NSLog(@"Failed to read file, error %@", error);
}
if (isAccessing) {
    [url stopAccessingSecurityScopedResource];
}

解决方案来源:https://stackoverflow.com/questions/58223929/how-do-i-get-around-nscocoaerrordomain257-when-pulling-a-file-from-the-files-ap

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容