读取相册中的视频报错 Error Domain=NSCocoaE

2021-07-16  本文已影响0人  cafei

读取相册中的视频报错 :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

上一篇 下一篇

猜你喜欢

热点阅读