Search code examples
iosswiftimagetemporary-directory

Save image file to temp directory


I have an image file named "Image.png", and it is saved in my main bundle (right beside the ViewController.swift file in the Project Navigator hierarchy). I want to save a copy of this image to the temporary directory. I've never done it before, what code could I use please?


Solution

  • Something like this should do the trick. I'm assuming you wanted the answer in Swift.

     /**
     * Copy a resource from the bundle to the temp directory.
     * Returns either NSURL of location in temp directory, or nil upon failure.
     *
     * Example: copyBundleResourceToTemporaryDirectory("kittens", "jpg")
     */
    public func copyBundleResourceToTemporaryDirectory(resourceName: String, fileExtension: String) -> NSURL?
    {
        // Get the file path in the bundle
        if let bundleURL = NSBundle.mainBundle().URLForResource(resourceName, withExtension: fileExtension) {
    
            let tempDirectoryURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
    
            // Create a destination URL.
            let targetURL = tempDirectoryURL.URLByAppendingPathComponent("\(resourceName).\(fileExtension)")
    
            // Copy the file.
            do {
                try NSFileManager.defaultManager().copyItemAtURL(bundleURL, toURL: targetURL)
                return targetURL
            } catch let error {
                NSLog("Unable to copy file: \(error)")
            }
        }
    
        return nil
    }
    

    Although, I'm not really sure why you would want to do this rather than directly accessing the bundle resource.