Swift 3 (lupakan NSURL).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
Untuk membuat URL dari string:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Jika kita ingin menambahkan nama file. Perhatikan, appendingPathComponent () menambahkan persen penyandian secara otomatis:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Ketika kita ingin memiliki String tetapi tanpa bagian root (perhatikan bahwa persen pengkodean dihapus secara otomatis):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Jika kita ingin menyimpan bagian root, kita melakukan ini (tapi ingat persentase penyandiannya - tidak dihapus):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
Untuk secara manual menambahkan persen penyandian untuk string:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
Untuk menghapus penyandian persen:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Pengkodean persen penting karena URL untuk permintaan jaringan memerlukannya, sementara URL ke sistem file tidak selalu berfungsi - tergantung pada metode aktual yang menggunakannya. Peringatan di sini adalah bahwa mereka dapat dihapus atau ditambahkan secara otomatis, jadi lebih baik debug konversi ini dengan hati-hati.