读取相册中的视频报错 :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];
}
网友评论