Entonces he convertido un NSURL
a String
. Entonces, si me println
parece, file:///Users/...
etc.
Más tarde, quiero esto de nuevo como NSURL
así que trato de convertirlo de nuevo como se ve a continuación, pero pierdo dos de las barras diagonales que aparecen en la versión de cadena anterior, que a su vez rompe el código ya url
que no es válido.
¿Por qué mi conversión vuelve a NSURL
eliminar dos barras diagonales de la String
que le doy, y cómo puedo convertir de nuevo a las NSURL
tres barras diagonales que contienen?
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
Respuestas:
fileURLWithPath()
se utiliza para convertir una ruta de archivo sin formato (por ejemplo, "/ ruta / a / archivo") en una URL. SuurlString
es una cadena URL completa que incluye el esquema, por lo que debe usarpara volver a convertirlo
NSURL
. Ejemplo:fuente
URL(string: urlstring)
En Swift 4 y Swift 3 , para convertir String a URL:
o,
Y para convertir URL a String:
El siguiente convierte los 'contenidos' de la url a cadena
fuente
String(contentsOf: URL)
devuelve la carga útil real de ese recurso, no la URL en formato de cadena. UseURL.absoluteString
para obtener la versión de cadena de la URL. developer.apple.com/reference/foundation/nsurl/…Hay una mejor manera de obtener la versión de cadena de la ruta desde NSURL en Swift:
fuente
/questions/27062454/converting-url-to-string-and-back-again
por url/programming/27062454/converting-url-to-string-and-back-again
file://
formato.AVISO : preste atención a la url, es
optional
y puede sernil
. Puede ajustar su url en la cita para convertirla en una cadena. Puedes probarlo en el patio de recreo.Actualización para Swift 5, Xcode 11:
fuente
file:///Users/foo
). Si bien solo se necesita la ruta absoluta (piense/Users/foo
), entoncesurl.path
debe usarse como en la respuesta de @ iphaaw a continuación.fuente
Swift 3 (olvídate de NSURL).
Para hacer una URL de una cadena:
Si queremos agregar el nombre del archivo. Tenga en cuenta que appendingPathComponent () agrega el porcentaje de codificación automáticamente:
Cuando queremos tener String pero sin la parte raíz (preste atención a que la codificación porcentual se elimina automáticamente):
Si queremos mantener la parte raíz, hacemos esto (pero tenga en cuenta el porcentaje de codificación, no se elimina):
Para agregar manualmente el porcentaje de codificación para una cadena:
Para eliminar el porcentaje de codificación:
La codificación porcentual es importante porque las URL para las solicitudes de red las necesitan, mientras que las URL del sistema de archivos no siempre funcionan, depende del método real que las use. La advertencia aquí es que pueden eliminarse o agregarse automáticamente, por lo que es mejor depurar estas conversiones con cuidado.
fuente
Código de versión de Swift 3:
fuente
2020 | SWIFT 5.1:
Y extensión para
URL?
uso:
fuente
fuente