Więc przekonwertowałem plik NSURL
na String
. Więc jeśli tak println
to wygląda file:///Users/...
itd.
Później chcę to z powrotem, NSURL
więc próbuję przekonwertować go z powrotem, jak widać poniżej, ale tracę dwa ukośniki, które pojawiają się w powyższej wersji ciągu, co z kolei powoduje uszkodzenie kodu, ponieważ url
jest nieprawidłowy.
Dlaczego moja konwersja powraca do NSURL
usunięcia dwóch ukośników z podanego przeze String
mnie ukośnika i jak mogę przekonwertować z powrotem na NSURL
trzy ukośniki zawierające?
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
Odpowiedzi:
fileURLWithPath()
służy do konwersji zwykłej ścieżki do pliku (np. „/ ścieżka / do / pliku”) na adres URL. YoururlString
to pełny ciąg adresu URL zawierający schemat, więc powinieneś użyćaby przekonwertować go z powrotem na
NSURL
. Przykład:źródło
URL(string: urlstring)
W Swift 4 i Swift 3 , aby przekonwertować ciąg na adres URL:
lub,
Aby przekonwertować adres URL na ciąg:
Poniższy konwertuje „zawartość” adresu URL na ciąg
źródło
String(contentsOf: URL)
zwraca rzeczywisty ładunek tego zasobu, a nie adres URL w formacie ciągu. Użyj,URL.absoluteString
aby uzyskać ciągową wersję adresu URL. developer.apple.com/reference/foundation/nsurl/…Jest lepszy sposób na pobranie ciągowej wersji ścieżki z NSURL w Swift:
źródło
/questions/27062454/converting-url-to-string-and-back-again
do adresu URL/programming/27062454/converting-url-to-string-and-back-again
file://
format.UWAGA : zwróć uwagę na adres URL, jest
optional
i może byćnil
. Możesz zawinąć swój adres URL w cytat, aby przekształcić go w ciąg. Możesz to przetestować na placu zabaw.Aktualizacja dla Swift 5, Xcode 11:
źródło
file:///Users/foo
). Chociaż jeśli potrzebna jest tylko ścieżka absolutna (pomyśl/Users/foo
),url.path
powinna być używana tak, jak w odpowiedzi @ iphaaw poniżej.źródło
Swift 3 (zapomnij o NSURL).
Aby utworzyć adres URL z ciągu:
Jeśli chcemy dodać nazwę pliku. Zwróć uwagę, że metoda appendingPathComponent () automatycznie dodaje kodowanie procentowe:
Kiedy chcemy mieć String, ale bez części głównej (zwróć uwagę, że kodowanie procentowe jest usuwane automatycznie):
Jeśli chcemy zachować część główną, robimy to (ale pamiętaj o kodowaniu procentowym - nie jest usuwane):
Aby ręcznie dodać kodowanie procentowe dla ciągu:
Aby usunąć kodowanie procentowe:
Kodowanie procentowe jest ważne, ponieważ adresy URL dla żądań sieciowych ich potrzebują, podczas gdy adresy URL do systemu plików nie zawsze będą działać - zależy to od faktycznej metody, która ich używa. Zastrzeżenie polega na tym, że mogą one zostać usunięte lub dodane automatycznie, więc lepiej ostrożnie debuguj te konwersje.
źródło
Kod wersji Swift 3:
źródło
2020 | SWIFT 5.1:
I rozszerzenie dla
URL?
stosowanie:
źródło
źródło