首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当设备被锁定/屏幕关闭时,文档子文件夹中的某些文件无法访问

当设备被锁定/屏幕关闭时,文档子文件夹中的某些文件无法访问
EN

Stack Overflow用户
提问于 2019-11-21 19:49:21
回答 1查看 189关注 0票数 1

当设备被锁定时,无法访问文档子文件夹中的某些文件。

AVAudioFile(forReading: currentPlaylistURLs[index!])

当设备被锁定或屏幕关闭,并且URL位于Documents文件夹中的某个子文件夹中时,上面的行将抛出一个错误。并非所有子文件夹都会导致错误(为什么??)。当设备被解锁时,没有错误。我在iOS 13.2.3中注意到了这种行为,因此它在此版本之前运行良好。

错误是:

代码语言:javascript
复制
[AVAudioFile.mm:134:AVAudioFileImpl: (ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)): error -54
Error Domain=com.apple.coreaudio.avfaudio Code=-54 "(null)" UserInfo={failed call=ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)}

有人经历过吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-23 16:18:26

您还需要将文件的文件保护密钥权限设置为.none及其父文件夹:

代码语言:javascript
复制
extension URL {
    var parentDirectory: URL? { try? resourceValues(forKeys: [.parentDirectoryURLKey]).parentDirectory }
    var fileProtection: URLFileProtection? { try? resourceValues(forKeys: [.fileProtectionKey]).fileProtection }
    func disableFileProtection() throws { try (self as NSURL).setResourceValue(URLFileProtection.none, forKey: .fileProtectionKey) }
}

代码语言:javascript
复制
let fileURL = URL.init(...)
if let parentDirectory = fileURL.parentDirectory {
    do {
        try parentDirectory.disableFileProtection()
        try fileURL.disableFileProtection()
    }
    catch { print(error) }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58982719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档