Search code examples
swiftnsurl

Check if NSURL is a directory


While using Swift I want to check if an NSURL location is a directory. With Objective-C this is not a problem and working find, but when I convert the code to Swift I run into a runtime error.

Maybe someone can point me in the right direction?

import Foundation

let defaultManager = NSFileManager.defaultManager()
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
let localDocumentURLs = defaultManager.contentsOfDirectoryAtURL(documentsDirectory,
includingPropertiesForKeys: nil, options: .SkipsPackageDescendants, error: nil) as NSURL[]

for url in localDocumentURLs {
    var isError: NSError? = nil
    var isDirectory: AutoreleasingUnsafePointer<AnyObject?> = nil
    var success: Bool = url.getResourceValue(isDirectory, forKey: NSURLIsDirectoryKey, error: &isError)
}

Solution

  • that is working quote well on my side:

    var error: NSError?
    let documentURL : NSURL = NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: true, error: &error)
    var isDirectory: ObjCBool = ObjCBool(0)
    if NSFileManager.defaultManager().fileExistsAtPath(documentURL.path, isDirectory: &isDirectory) {
        println(isDirectory)
    }
    

    NOTE: it checks whether the Documents folder is a folder. you can replace the URL with anything, of course.