2016-08-18 49 views

回答

5

蘋果公司試圖將每個人從路徑作爲字符串範例轉移到URL(即file:///path/to/file.text)。 Swift API幾乎刪除了所有path,轉而使用URL

你仍然可以找到它在Objective-C(NSString):

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
let getImagePath = NSString.path(withComponents: [paths, "fileName"]) 

更SWIFTY方式:

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
let url = URL(fileURLWithPath: paths).appendingPathComponent("fileName") 
+0

快速的錯誤:「無法在'myImage.image = UIImage(contentsOfFIle:url)中將'URL'類型的值轉換爲期望的參數類型'String'「。 – Arkelyan

+2

如果您決定使用URL,請調用'path'屬性以獲取路徑爲字符串:' myImage.image = UIImage(contentsOfFIle:imageUrl.path)' –

+0

真棒,所有的伎倆,謝謝! – Arkelyan

1

我個人喜歡把自己從App代表這個價值。把這段代碼(像普通函數一樣)放到AppDelegate.swift中。

lazy var applicationDocumentsDirectory: URL = { 
    let urls = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask) 
    return urls[urls.count-1] 
}() 

所以在所有的文件,你可以使用這種方式:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let imageUrl = appDelegate.applicationDocumentsDirectory.appendingPathComponent("YourFileName") 
    let imageUrlString = imageUrl.urlString //if String is needed 
+0

獲取類型爲'URL'的錯誤值沒有成員'urlString'。如果我不使用它,而是使用imageUrl然後我得到「不能將類型'URL'的值轉換爲期望的參數類型'字符串'」in:myImage.image = UIImage(contentsOfFIle:imageUrl) – Arkelyan

+0

我忘了提及我發佈了寫在Xcode 8 Beta 6上的swift 3代碼。這是第一次必須使用成員urlString,因爲更新後的SDK請求它。 – pedrouan

相關問題