IT

URL을 공유로 변환 한 후 다시 변환

lottoking 2020. 7. 21. 07:40
반응형

URL을 공유로 변환 한 후 다시 변환


를로 CHAPTER 2 그래서 NSURL했습니다 String. 그래서 내가 println처럼 보인다 file:///Users/...

나중에 다시 원 NSURL잃어 버립니다 아래에서 볼 수 있습니다 다시 변환하려고하지만 위의 버전 버전에 슬래시 두 개를 잃어 버립니다 url.

CHAPTER 2 NSURL에서 String내가 두 개의 슬래시 제거하는 이유는 무엇 이며 어떻게 NSURL포함 된 세 개의 슬래시 로 다시 CHAPTER 2 할 수 있습니까?

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에주의를 기울이십시오.이 예제에서는 무효가 될 수 있습니다. 따옴표로 URL을 사용하여 변환 할 수 있습니다.

let urlString = "http://ifconfig.me"
//string to url
let url = NSURL(string: urlString)
//url to string
let string = "\(url)"

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에서 URL을 만들려면

let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
//  ▿ some : file:///var/mobile/someLongPath

구성 요소 ()를 추가하면 퍼센트 인코딩이 자동으로 추가됩니다.

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은 항상 작동하지는 않습니다. 실제로 사용하는 방법에 따라 다릅니다. 여기서주의 할 점은 자동으로 제거되거나 추가 될 수 있으므로 이러한 변환을 신중하게 디버그하는 것이 좋습니다.


Swift 3 버전 코드 :

let urlString = "file:///Users/Documents/Book/Note.txt"
let pathURL = URL(string: urlString)!
print("the url = " + pathURL.path)

UIWebViewDelegate와 함께 사용되는 Swift 3 shouldStartLoadWith

  func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    let urlPath: String = (request.url?.absoluteString)!
    print(urlPath)
    if urlPath.characters.last == "#" {
        return false
    }else{
        return true
    }

}

참고 URL : https://stackoverflow.com/questions/27062454/converting-url-to-string-and-back-again

반응형