스위프트 3 (NSURL은 잊어 버림).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
문자열에서 URL을 만들려면
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
파일 이름을 추가하려면 pathComponent ()를 추가하면 퍼센트 인코딩이 자동으로 추가됩니다.
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
우리가 String 부분을 원하지만 루트 부분을 원하지 않을 때
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
루트 부분을 유지하려면이 작업을 수행하십시오 (그러나 인코딩 비율은 염두에 두지 마십시오).
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
문자열의 퍼센트 인코딩을 수동으로 추가하려면 :
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
퍼센트 인코딩을 제거하려면
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
네트워크 요청의 URL에는 URL이 필요하기 때문에 퍼센트 인코딩은 중요하지만 파일 시스템에 대한 URL은 항상 작동하지는 않습니다. URL을 사용하는 실제 방법에 따라 다릅니다. 여기서주의 할 사항은 자동으로 제거되거나 추가 될 수 있으므로 이러한 변환을 신중하게 디버그하는 것이 좋습니다.