Skip to content

Instantly share code, notes, and snippets.

@simplytunde
Last active August 29, 2015 14:12
Show Gist options
  • Save simplytunde/8cabbbbd004186a7a854 to your computer and use it in GitHub Desktop.
Save simplytunde/8cabbbbd004186a7a854 to your computer and use it in GitHub Desktop.
File System Program Guide
    func nsurlForApplicationDirectory()->NSURL?{
         let manager=NSFileManager.defaultManager()
         let possibleURLs=manager.URLsForDirectory(NSSearchPathDirectory.AllLibrariesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask) //look for the location of app support dir in user dormain
        if let directoryURL=possibleURLs.first as? NSURL{ //pick the first one
           directoryURL.URLByAppendingPathComponent(NSBundle.mainBundle().bundleIdentifier!) //This is this app application support directory
            return directoryURL
        }
        return nil
    }
    func convertUrlToBookmark(url:NSURL,error:NSErrorPointer=nil)->NSData?{ //This data can be save
        let bookmark=url.bookmarkDataWithOptions(NSURLBookmarkCreationOptions.SuitableForBookmarkFile, includingResourceValuesForKeys: nil, relativeToURL: nil, error: error)
        if bookmark == nil || error != nil{
            return nil
        }
        return bookmark
    }
    func filesInDirectory(directory:NSURL)->[NSURL]?{
        if let contentsOfDirectory=contentsOfADirectory(directory){
            var isDirectory:AnyObject?
            var isPackage:AnyObject?
            var error:NSError?
            var listOfDirectories=NSMutableArray()
            for url in contentsOfDirectory{
                isDirectory=nil
                isPackage=nil
                error=nil
                url.getResourceValue(&isDirectory, forKey: NSURLIsDirectoryKey, error: &error)
                if (isDirectory != nil && error != nil){
                   error=nil
                   url.getResourceValue(&isPackage, forKey: NSURLIsPackageKey, error: &error)
                   if (isPackage != nil && error != nil){
                      listOfDirectories.addObject(url)
                   }
                }
            }
           return listOfDirectories as NSArray as? [NSURL]
        }
        return nil
    }
    func contentsOfADirectory(directory:NSURL)->[NSURL]?{
        let manager=NSFileManager.defaultManager()
        let keysToReturn=[NSURLIsDirectoryKey,NSURLIsPackageKey,NSURLLocalizedNameKey]
        let directoryEnumerator=manager.enumeratorAtURL(directory, includingPropertiesForKeys: keysToReturn, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants){
            (url,error) in
            return true
        }
        return directoryEnumerator?.allObjects as? [NSURL]
    }
    func convertDataToUrl(data:NSData,error:NSErrorPointer=nil)->NSURL?{
         var bookmarkIsStale=ObjCBool(false)
         let url=NSURL(byResolvingBookmarkData: data, options: NSURLBookmarkResolutionOptions.WithoutUI, relativeToURL: nil, bookmarkDataIsStale: &bookmarkIsStale, error: error) //convert the data to url
        if bookmarkIsStale.boolValue || error != nil{ // if error occured or bookmarkIsStale,return
            return nil
        }
        return url
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment