iosswiftnsdocumentdirectory

How to find NSDocumentDirectory in Swift?


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.


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[]!
    

    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]