How to find NSDocumentDirectory in Swift?

ios, nsdocumentdirectory, swift

Solution

Apparently, the compiler thinks `NSSearchPathDirectory:0` is an array, and of course it expects the type `NSSearchPathDirectory` instead. Certainly not a helpful error message.

But as to the reasons:

First, you are confusing the argument names and types. Take a look at the function definition:

func NSSearchPathForDirectoriesInDomains(
    directory: NSSearchPathDirectory,
    domainMask: NSSearchPathDomainMask,
    expandTilde: Bool) -> AnyObject[]!

- `directory` and `domainMask` are the names, you are using the types, but you should leave them out for functions anyway. They are used primarily in methods.

- Also, Swift is strongly typed, so you shouldn't just use 0. Use the enum's value instead.

- And finally, it returns an array, not just a single path.

So that leaves us with (updated for Swift 2.0):

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]

and for Swift 3:

let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

Problem

I'm trying to get path to Documents folder with code: ``` var documentsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory:0,NSSearchPathDomainMask:0,true) ``` but Xcode gives error: `Cannot convert expression's type 'AnyObject[]!' to type 'NSSearchPathDirectory'` I'm trying to understand what is wrong in the code.

Original source