尝试在应用程序支持中创建目录时权限被拒绝 [英] Permission Denied when trying to create a directory in Application Support

查看:49
本文介绍了尝试在应用程序支持中创建目录时权限被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在应用程序支持目录中创建一个目录,但每次都失败.

I'm trying to create a directory inside the Application Support Directory, but it fails every single time.

代码如下:

func getDownloadableContentPath() -> String {
        let paths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
        var directory = paths[0]
        directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString
        let fileManager = FileManager.default
        if !fileManager.fileExists(atPath: directory) {
            do {
               try fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil)
            }
            catch {
               print("Error: Unable to create directory: \(error)")
            }
            var url = URL(fileURLWithPath: directory)
            var values = URLResourceValues()
            values.isExcludedFromBackup = true
            do {
                try url.setResourceValues(values)
            }
            catch {
                print("Error: Unable to exclude directory from backup: \(error)")
            }
        }
        return directory
    }

错误是:

 Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file "IAP" in the folder "Application%20Support"." UserInfo={NSFilePath=file:///var/mobile/Containers/Data/Application/FF91E234-F856-492E-8C91-9EFAEA3735D4/Library/Application%20Support/IAP, NSUnderlyingError=0x174245430 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

我试过改变附加路径组件,试过文档目录,都失败了,出现同样的错误.

I've tried changing the appending path component, tried the documents directory, all fail with the same error.

推荐答案

问题出在这一行

directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString

这个返回filePath,而下面的函数需要目录的简单路径.

fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil)

所以要么改变这一行

directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString

用这条线

directory = directory + "/IAP"

与下一行更改同一行

let url = URL(fileURLWithPath: directory).appendingPathComponent("IAP")

并使用此函数创建目录

fileManager.createDirectory(at: directory, withIntermediateDirectories: true, attributes: nil)

希望对你有帮助.

这篇关于尝试在应用程序支持中创建目录时权限被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆