biju
biju

Reputation: 25

Creating a directory at /Users/Shared/ - using Swift

I am using the following code to create a directory in /Users/Shared/ to share data of my application between all users. When i run the code gotthe below output.

2019-03-08 19:41:41.751418+0530 MyApp[7224:488397] Couldn't create document directory

2019-03-08 19:41:41.754026+0530 MyApp[7224:488397] Document directory is file:///Users/Appname

    let fileManager = FileManager.default
    if let tDocumentDirectory = fileManager.urls(for: .userDirectory, in: .localDomainMask).first {
        let filePath =  tDocumentDirectory.appendingPathComponent("Appname")
        if !fileManager.fileExists(atPath: filePath.path) {
            do {
                try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
            } catch {
                NSLog("Couldn't create document directory")
            }
        }
        NSLog("Document directory is \(filePath)")
     }

I don't why this error occured. How this can be done?

Upvotes: 1

Views: 1269

Answers (1)

vadian
vadian

Reputation: 285260

Please read the log messages carefully.

You are trying to create the folder file:///Users/Appname which is not in /Users/Shared. You have to append "Shared/Appname".

And you are encouraged to use the URL related API of FileManager (and less confusing variable names 😉)

let fileManager = FileManager.default
let userDirectory = try! fileManager.url (for: .userDirectory, in: .localDomainMask, appropriateFor: nil, create: false)
let folderURL = userDirectory.appendingPathComponent("Shared/Appname")
if !fileManager.fileExists(atPath: folderURL.path) {
    do {
        try fileManager.createDirectory(at: folderURL, withIntermediateDirectories: true, attributes: nil)
    } catch {
        print("Couldn't create document directory", error)
    }
}
print("Document directory is \(folderURL)")

Upvotes: 4

Related Questions