Swift 3 (vergiss NSURL).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
So erstellen Sie eine URL aus einer Zeichenfolge:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Wenn wir den Dateinamen hinzufügen möchten. Beachten Sie, dass appendingPathComponent () die prozentuale Codierung automatisch hinzufügt:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Wenn wir String haben möchten, aber ohne den Root-Teil (achten Sie darauf, dass die prozentuale Codierung automatisch entfernt wird):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Wenn wir den Stammteil behalten möchten, tun wir dies (aber beachten Sie die prozentuale Codierung - sie wird nicht entfernt):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
So fügen Sie die prozentuale Codierung für eine Zeichenfolge manuell hinzu:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
So entfernen Sie die prozentuale Codierung:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Die prozentuale Codierung ist wichtig, da URLs für Netzwerkanforderungen diese benötigen, während URLs zum Dateisystem nicht immer funktionieren - dies hängt von der tatsächlichen Methode ab, mit der sie verwendet werden. Die Einschränkung hierbei ist, dass sie möglicherweise automatisch entfernt oder hinzugefügt werden. Debuggen Sie diese Konvertierungen daher besser sorgfältig.