Create directory in app group container swift

前端 未结 2 656
闹比i
闹比i 2021-01-02 11:01

How can I go about creating a directory in my App\'s group container?

I\'ve tried using as the file manager:

let directory: NSURL = NSFileManager.def         


        
相关标签:
2条回答
  • 2021-01-02 11:35

    containerURLForSecurityApplicationGroupIdentifier returns the URL to the group container.
    To create a directory append the new directory name as path component

    let fileManager = NSFileManager.defaultManager()
    if let directory = fileManager.containerURLForSecurityApplicationGroupIdentifier("APP_GROUP_IDENTIFIER") {
        let newDirectory = directory.URLByAppendingPathComponent("MyDirectory")
        try? fileManager.createDirectoryAtURL(newDirectory, withIntermediateDirectories: false, attributes: nil)
    }
    

    Swift 3:

    let fileManager = FileManager.default
    if let directory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "APP_GROUP_IDENTIFIER") {
        let newDirectory = directory.appendingPathComponent("MyDirectory")
        try? fileManager.createDirectory(at: newDirectory, withIntermediateDirectories: false, attributes: nil)
    }
    
    0 讨论(0)
  • 2021-01-02 11:38
    1. Check you enable "App Group" entitlement. It can be enable from project -> Capabilities -> App Group -> switch on.

    2. Add an app group identifier "group.com.companyName.exampleApp" as above image.

    3. Now you can access app group container using the specified identifier.

      let appIdentifier = "group.com.companyName.exampleApp"
      let fileManager = NSFileManager.defaultManager()
      let container = fileManager.containerURLForSecurityApplicationGroupIdentifier(appIdentifier)
      
    4. If you set everything properly, you will get an URL address in "container".

    5. Now,

      do{
         if let container = container {
      
      
          let directoryPath  = container.URLByAppendingPathComponent("sampleDirectory")
      
          var isDir : ObjCBool = false
          if let path = directoryPath?.path where fileManager.fileExistsAtPath(path, isDirectory:&isDir) {
            if isDir {
              // file exists and is a directory
            } else {
              // file exists and is not a directory
            }
          } else if let directoryPath = directoryPath {
            // file or directory does not exist
            try fileManager.createDirectoryAtURL(directoryPath, withIntermediateDirectories: false, attributes: nil)
          }
        }
      } catch let error as NSError {
        print(error.description)
      }
      

    courtesy: file & directory checking code taken from https://stackoverflow.com/a/24696209/2666902

    0 讨论(0)
提交回复
热议问题