将URL转换为string,然后再返回
所以我已经将一个NSURL转换为一个String 。 所以,如果我println它看起来像file:///Users/...等 
 后来我想把它作为一个NSURL所以我尝试将其转换回来,如下所示,但是我丢失了上面string版本中出现的两个正斜杠,这反过来又破坏了代码,因为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(例如“/ path / to / file”)转换为一个URL。 你的urlString是一个完整的URLstring,包括scheme,所以你应该使用 
 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 
在Swift中从NSURL获取string版本的path有一个更好的方法:
 let path:String = url.path 
在Swift 4和Swift 3中 , 要将String转换为URL:
 URL(string: String) 
要么,
 URL.init(string: "yourURLString") 
并将URL转换为string:
 URL.absoluteString 
下面的一个将URL的“内容”转换为string
 String(contentsOf: URL) 
更新:注意的URL,它可以在这个例子中为零。 您可以将您的url包裹在报价中,将其转换为string
 let urlString = "http://ifconfig.me" //string to url let url = NSURL(string: urlString) //url to string let string = "\(url)" 
Swift 3 (忘记NSURL)。
 let fileName = "20-01-2017 22:47" let folderString = "file:///var/mobile/someLongPath" 
要从一个string中创build一个URL:
 let folder: URL? = Foundation.URL(string: folderString) // Optional<URL> // ▿ some : file:///var/mobile/someLongPath 
如果我们想要添加文件名。 请注意,appendixPathComponent()自动添加百分比编码:
 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" 
手动添加string的百分比编码:
 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" 
百分比编码很重要,因为networking请求的URL需要它们,而到文件系统的URL并不总是工作 – 这取决于使用它们的实际方法。 这里的警告是,他们可能会被删除或自动添加,所以更好地仔细debugging这些转换。
Swift 3版本代码:
 let urlString = "file:///Users/Documents/Book/Note.txt" let pathURL = URL(string: urlString)! print("the url = " + pathURL.path) 
Swift 3与UIWebViewDelegate一起使用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 } }