Swift 3 (zapomnij o NSURL).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
Aby utworzyć adres URL z ciągu:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Jeśli chcemy dodać nazwę pliku. Zwróć uwagę, że metoda appendingPathComponent () automatycznie dodaje kodowanie procentowe:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Kiedy chcemy mieć String, ale bez części głównej (zwróć uwagę, że kodowanie procentowe jest usuwane automatycznie):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Jeśli chcemy zachować część główną, robimy to (ale pamiętaj o kodowaniu procentowym - nie jest usuwane):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
Aby ręcznie dodać kodowanie procentowe dla ciągu:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
Aby usunąć kodowanie procentowe:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Kodowanie procentowe jest ważne, ponieważ adresy URL dla żądań sieciowych ich potrzebują, podczas gdy adresy URL do systemu plików nie zawsze będą działać - zależy to od faktycznej metody, która ich używa. Zastrzeżenie polega na tym, że mogą one zostać usunięte lub dodane automatycznie, więc lepiej ostrożnie debuguj te konwersje.