Swift 3 (quên về NSURL).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
Để tạo một URL trong chuỗi:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Nếu chúng ta muốn thêm tên tệp. Lưu ý, appendingPathComponent () tự động thêm phần trăm mã hóa:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Khi chúng tôi muốn có Chuỗi nhưng không có phần gốc (chú ý rằng phần trăm mã hóa được xóa tự động):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Nếu chúng tôi muốn giữ phần gốc, chúng tôi sẽ thực hiện việc này (nhưng lưu ý phần trăm mã hóa - phần này không bị xóa):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
Để tự thêm mã hóa phần trăm cho chuỗi:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
Để xóa phần trăm mã hóa:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Mã hóa phần trăm rất quan trọng vì URL cho các yêu cầu mạng cần chúng, trong khi URL cho hệ thống tệp sẽ không luôn hoạt động - điều này phụ thuộc vào phương pháp thực tế sử dụng chúng. Thông báo trước ở đây là chúng có thể được gỡ bỏ hoặc thêm tự động, vì vậy tốt hơn nên gỡ lỗi các chuyển đổi này một cách cẩn thận.