Loading/Downloading image from URL on Swift

前端 未结 30 2512
感动是毒
感动是毒 2020-11-21 05:39

I\'d like to load an image from a URL in my application, so I first tried with Objective-C and it worked, however, with Swift, I\'ve a compilation error:

30条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-21 05:52

    Swift 2.x answer that downloads image to file (as opposed to Leo Dabus's answer, which stores the image in memory). Based on Leo Dabus's answer and Rob's answer from Get the data from NSURLSession DownloadTaskWithRequest from completion handler:

        // Set download vars
        let downloadURL = NSURL() // URL to download from
        let localFilename = "foobar.png" // Filename for storing locally 
    
        // Create download request
        let task = NSURLSession.sharedSession().downloadTaskWithURL(downloadURL) { location, response, error in
            guard location != nil && error == nil else {
                print("Error downloading message: \(error)")
                return
            }
    
            // If here, no errors so save message to permanent location
            let fileManager = NSFileManager.defaultManager()
            do {
                let documents = try fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
                let fileURL = documents.URLByAppendingPathComponent(localFilename)
                try fileManager.moveItemAtURL(location!, toURL: fileURL)
                self.doFileDownloaded(fileURL, localFilename: localFilename)
                print("Downloaded message @ \(localFilename)")
            } catch {
                print("Error downloading message: \(error)")
            }
        }
    
        // Start download
        print("Starting download @ \(downloadURL)")
        task.resume()
    
    
    // Helper function called after file successfully downloaded
    private func doFileDownloaded(fileURL: NSURL, localFilename: String) {
    
        // Do stuff with downloaded image
    
    }
    

提交回复
热议问题