2014-10-16 18 views
3

所以我有URL作爲字符串(在這種情況下一個JPG,但如果可能的話,希望任何文件類型的一般程序),我有文件路徑作爲字符串,我想保存文件。簡單的斯威夫特文件下載與URL

什麼是最快的方式來實現它?

請記住這是針對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) 

回答

4

如果你爲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) 
+0

Thxs!和可可提示Thxs!你的代碼在「if」語句中給了我一個錯誤:「條件綁定中的綁定值大部分是可選類型」。刪除條件和離開「網址」聲明本身帶走了錯誤,但不知道它的相關性:)你能解釋一下嗎?更新:我現在工作THX !!!!!仍然不確定「如果」,但沒有它的工作。我會更新原始帖子中的代碼,供大家參考。 – Gio 2014-10-16 20:46:57

+0

這可能是Xcode 6.0 - 6.1的差異 - 他們在某處添加了可分解的初始化程序。當你更新時,你需要切換回這個版本。 :) – 2014-10-16 21:18:39

0

隨着斯威夫特4,代碼爲:

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