2017-09-01 61 views
0

我试图在应用程序支持目录内创建一个目录,但每次都失败。尝试在应用程序支持中创建目录时拒绝权限

下面的代码:

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"}} 

我试图改变追加路径组件,试图文档目录,所有的失败,同样的错误。

回答

2

的问题是在这条线

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

这回文件路径,而所需的目录的简单路径下的功能。

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

因此,要么改变这一行

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

这一行

directory = directory + "/IAP" 

OR 变化低于线

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

,利用此功能来创建目录

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

希望这有助于你。

相关问题