그래서를로 변환 NSURL
했습니다 String
. 그래서 내가 등 println
처럼 보인다 면file:///Users/...
나중에 이것을 다시 원 NSURL
하므로 아래에서 볼 수 있듯이 다시 변환하려고하지만 위의 문자열 버전에 나타나는 슬래시 두 개를 잃어 버립니다 url
.
변환 NSURL
에서 String
내가 두 개의 슬래시 를 제거하는 이유는 무엇 이며 어떻게 NSURL
포함 된 세 개의 슬래시 로 다시 변환 할 수 있습니까?
var urlstring: String = recordingsDictionaryArray[selectedRow]["path"] as String
println("the url string = \(urlstring)")
// looks like file:///Users/........etc
var url = NSURL.fileURLWithPath(urlstring)
println("the url = \(url!)")
// looks like file:/Users/......etc
답변
fileURLWithPath()
일반 파일 경로 (예 : “/ path / to / file”)를 URL로 변환하는 데 사용됩니다. 당신은 urlString
당신이 사용한다, 그래서 계획을 포함한 전체 URL 문자열입니다
let url = NSURL(string: urlstring)
다시로 변환합니다 NSURL
. 예:
let urlstring = "file:///Users/Me/Desktop/Doc.txt"
let url = NSURL(string: urlstring)
println("the url = \(url!)")
// the url = file:///Users/Me/Desktop/Doc.txt
답변
에서 스위프트 4 와 스위프트 3 ,
URL로 문자열을 변환하려면 :
URL(string: String)
또는,
URL.init(string: "yourURLString")
그리고 URL을 문자열로 변환하려면 :
URL.absoluteString
아래 의 것은 URL의 ‘내용’을 문자열로 변환합니다.
String(contentsOf: URL)
답변
Swift의 NSURL에서 문자열 버전의 경로를 얻는 더 좋은 방법이 있습니다.
let path:String = url.path
답변
주의 사항 : URL에 지불 관심을 그것의 optional
그것이 될 수 있습니다 nil
. 따옴표로 URL을 감싸서 문자열로 변환 할 수 있습니다. 운동장에서 테스트 할 수 있습니다.
Swift 5, Xcode 11 용 업데이트 :
import Foundation
let urlString = "http://ifconfig.me"
// string to url
let url = URL(string: urlString)
//url to string
let string = "\(url)"
// if you want the path without `file` schema
// let string = "\(url.path)"
답변
let url = URL(string: "URLSTRING HERE")
let anyvar = String(describing: url)
답변
스위프트 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을 사용하는 실제 방법에 따라 다릅니다. 여기서주의 할 사항은 자동으로 제거되거나 추가 될 수 있으므로 이러한 변환을 신중하게 디버그하는 것이 좋습니다.
답변
스위프트 3 버전 코드 :
let urlString = "file:///Users/Documents/Book/Note.txt"
let pathURL = URL(string: urlString)!
print("the url = " + pathURL.path)