【问题标题】:Simple Swift file download with URL带有 URL 的简单 Swift 文件下载
【发布时间】:2014-10-16 15:44:57
【问题描述】:

所以我将 URL 作为字符串(在本例中为 JPG,但如果可能的话,我希望任何文件类型的通用过程)并且我将文件路径作为字符串作为我要保存文件的位置。

实现这一点的最快方法是什么?

请记住,这是针对 OSX 命令行应用程序的。我尝试了一些在这里找到的示例代码,主要使用 UIImage,但我得到错误:“使用未解析的标识符”,添加“导入 UIKit”得到错误:“没有这样的模块”。请帮忙!

import Foundation

let myURLstring = "http://www.safety.vanderbilt.edu/images/staff/Bob-Wheaton.jpg"
let myFilePathString = "/Volumes/HD/Staff Pictures/Bob-VEHS.jpg"

--->以上是原始问题

--->下面是新的改进代码:工作

import Foundation

let myURLstring = "http://www.safety.vanderbilt.edu/images/staff/Bob-Wheaton.jpg"
let myFilePathString = "/Volumes/HD/Staff Pictures/Bob-VEHS.jpg"

let url = NSURL(string: myURLstring)
let imageDataFromURL = NSData(contentsOfURL: url)

let fileManager = NSFileManager.defaultManager()
fileManager.createFileAtPath(myFilePathString, contents: imageDataFromURL, attributes: nil)

【问题讨论】:

    标签: xcode macos swift


    【解决方案1】:

    如果您正在为 OS X 编写代码,您将使用 NSImage 而不是 UIImage。为此,您需要 import Cocoa - UIKit 适用于 iOS,Cocoa 适用于 Mac。

    NSData 有一个初始化器,它采用 NSURL,另一个采用文件路径,因此您可以通过任一方式加载数据。

    if let url = NSURL(string: myURLstring) {
        let imageDataFromURL = NSData(contentsOfURL: url)
    }
    
    let imageDataFromFile = NSData(contentsOfFile: myFilePathString)
    

    【讨论】:

    • 谢谢!并感谢可可小费!您的代码在“if”语句中给了我一个错误:“条件绑定中的绑定值大多数是可选类型”。删除条件并保留“url”声明本身会消除错误,但不确定它的相关性:) 你能解释一下吗?更新:我现在可以工作了 THX !!!!!!仍然不确定“如果”,但没有它就可以工作。我会更新原帖中的代码供大家参考。
    • 这可能是 Xcode 6.0 - 6.1 的不同之处——他们在途中的某个地方添加了可失败的初始化程序。更新时,您需要切换回此版本。 :)
    【解决方案2】:

    使用 Swift 4,代码将是:

    if let url = URL(string: myURLstring) {
        let imageDataFromURL = try Data(contentsOf: url)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      相关资源
      最近更新 更多