Então eu converti um NSURL
para um String
. Então, se eu println
parecer, file:///Users/...
etc.
Mais tarde, eu quero isso de volta como um, NSURL
então eu tento convertê-lo novamente, como visto abaixo, mas perco duas das barras que aparecem na versão de string acima, que por sua vez quebra o código como url
inválido.
Por que minha conversão está de volta à NSURL
remoção de duas barras do que String
eu dou e como posso converter novamente nas NSURL
três barras contendo?
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
Respostas:
fileURLWithPath()
é usado para converter um caminho de arquivo simples (por exemplo, "/ path / to / file") em um URL. VocêurlString
é uma string de URL completa, incluindo o esquema, portanto, você deve usarpara convertê-lo novamente
NSURL
. Exemplo:fonte
URL(string: urlstring)
No Swift 4 e Swift 3 , para converter String em URL:
ou,
E para converter o URL em String:
O abaixo converte o 'conteúdo' do URL em string
fonte
String(contentsOf: URL)
retorna a carga útil real desse recurso, não o URL no formato de sequência. UseURL.absoluteString
para obter a versão da string do URL. developer.apple.com/reference/foundation/nsurl/…Existe uma maneira melhor de obter a versão em string do caminho do NSURL no Swift:
fonte
/questions/27062454/converting-url-to-string-and-back-again
para o URL/programming/27062454/converting-url-to-string-and-back-again
file://
formato.AVISO : preste atenção ao URL, é
optional
e pode sernil
. Você pode agrupar seu URL na cotação para convertê-lo em uma string. Você pode testá-lo no parquinho.Atualização para o Swift 5, Xcode 11:
fonte
file:///Users/foo
). Embora apenas o caminho absoluto seja necessário (pense/Users/foo
), eleurl.path
deve ser usado como na resposta do @ iphaaw abaixo.fonte
Swift 3 (esqueça o NSURL).
Para transformar um URL em uma string:
Se queremos adicionar o nome do arquivo. Observe que appendingPathComponent () adiciona a porcentagem de codificação automaticamente:
Quando queremos ter String, mas sem a parte raiz (preste atenção que a porcentagem de codificação é removida automaticamente):
Se queremos manter a parte raiz, fazemos isso (mas lembre-se da porcentagem de codificação - ela não é removida):
Para adicionar manualmente a porcentagem de codificação para uma sequência:
Para remover a porcentagem de codificação:
A codificação percentual é importante porque os URLs para solicitações de rede precisam deles, enquanto os URLs para o sistema de arquivos nem sempre funcionam - depende do método real que os utiliza. A ressalva aqui é que elas podem ser removidas ou adicionadas automaticamente, portanto é melhor depurar essas conversões com cuidado.
fonte
Código da versão do Swift 3:
fonte
2020 SWIFT 5.1:
E extensão para
URL?
uso:
fonte
fonte