我刚刚开始学习来自Android的iOS的Apple Swift编程。我现在基本上可以阅读和操作swift代码,还学习了iOS swift编程中使用的一些通用类,但是仍然对语法和所有内容感到困惑。
我正在尝试下载文件。就像,让我们说来自这个网址
var url = "http://www.mywebsite.com/myfile.pdf"
在一个按钮中单击。也许也有视觉进步
通过在stackoverflow中搜索,我偶然发现了Alamofire。我可以尝试一下,但是我不确定这是否是最好的方法。
因此,我想问一下实现目标的方式和方式(iOS7和iOS8)是什么。此外,利弊也很棒!
没有Alamofire的示例下载程序类:
class Downloader { class func load(URL: NSURL) { let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil) let request = NSMutableURLRequest(URL: URL) request.HTTPMethod = "GET" let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in if (error == nil) { // Success let statusCode = (response as NSHTTPURLResponse).statusCode println("Success: \(statusCode)") // This is your file-variable: // data } else { // Failure println("Failure: %@", error.localizedDescription); } }) task.resume() } }
这是在您自己的代码中使用它的方法:
class Foo { func bar() { if var URL = NSURL(string: "http://www.mywebsite.com/myfile.pdf") { Downloader.load(URL) } } }
Swift 3版本
另请注意,将大文件下载到磁盘上,而不是在内存中。参见`downloadTask:
class Downloader { class func load(url: URL, to localUrl: URL, completion: @escaping () -> ()) { let sessionConfig = URLSessionConfiguration.default let session = URLSession(configuration: sessionConfig) let request = try! URLRequest(url: url, method: .get) let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in if let tempLocalUrl = tempLocalUrl, error == nil { // Success if let statusCode = (response as? HTTPURLResponse)?.statusCode { print("Success: \(statusCode)") } do { try FileManager.default.copyItem(at: tempLocalUrl, to: localUrl) completion() } catch (let writeError) { print("error writing file \(localUrl) : \(writeError)") } } else { print("Failure: %@", error?.localizedDescription); } } task.resume() } }