2016-08-18 2 views

Antwort

5

Apple versucht, alle aus dem Pfad-als-String-Paradigma zu URL (d. H. file:///path/to/file.text) zu bewegen. Die Swift API entfernt praktisch alle path zugunsten von URL.

Sie können es immer noch finden in Objective-C (NSString):

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

Je mehr Swifty Weg:

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

schnellen Fehler beim Versuch auf UIImageView zu setzen: " kann den Wert des Typs 'URL' nicht in den erwarteten Argumenttyp 'String' konvertieren "in: myImage.image = UIImage (contentsOfFIle: url) – Arkelyan

+2

Wenn Sie die URL verwenden, rufen Sie die' path' -Eigenschaft auf, um den Pfad als string zu erhalten: ' myImage.image = UIImage (contentsOfFile: imageUrl.path) ' –

+0

genial, dass alle den Trick gemacht haben, danke! – Arkelyan

1

Ich persönlich mag aus dem App Delegierter dieses Wertes zu bekommen. Setzen Sie diesen Code (steht wie normale Funktion) in AppDelegate.swift.

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

So in alle Ihre Dateien können Sie es auf diese Weise verwenden:

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

Fehlerwert vom Typ 'URL' erhalten hat kein Mitglied 'URLString'. Wenn ich das nicht verwende, sondern stattdessen imageUrl, dann bekomme ich "kann nicht konvertieren Wert des Typs 'URL' in den erwarteten Argumenttyp 'String'" in: myImage.image = UIImage (contentsOfFIle: imageUrl) – Arkelyan

+0

Ich vergaß zu erwähnen, dass ich Posted Swift 3-Code geschrieben auf Xcode 8 Beta 6. Es war das erste Mal, dass ein Mitglied URLString verwenden musste, wie das aktualisierte SDK es anfordert. – pedrouan

Verwandte Themen