Swift 3 (NSURL'u unutma).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
Bir dizeden URL oluşturmak için:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Dosya adını eklemek istiyorsak. AppendingPathComponent () yönteminin kodlama yüzdesini otomatik olarak eklediğini unutmayın:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
String'e sahip olmak istediğimiz halde kök kısmı olmadan (yüzde kodlamanın otomatik olarak kaldırıldığına dikkat edin):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Kök kısmını tutmak istiyorsak bunu yaparız (ancak kodlama yüzdesine dikkat edin - kaldırılmaz):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
Bir dizeye ilişkin kodlama yüzdesini manuel olarak eklemek için:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
Kodlama yüzdesini kaldırmak için:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Yüzde kodlama önemlidir, çünkü ağ istekleri için URL'lerin bunlara ihtiyacı vardır, ancak dosya sistemine URL'ler her zaman çalışmaz - bu, onları kullanan gerçek yönteme bağlıdır. Buradaki uyarı, otomatik olarak kaldırılabilmeleri veya eklenebilmeleridir, bu nedenle bu dönüşümleri dikkatlice hata ayıklayın.