Jadi saya telah mengonversikan NSURL
ke String
. Jadi jika saya println
terlihat seperti file:///Users/...
dll.
Kemudian saya ingin ini kembali NSURL
jadi saya mencoba dan mengubahnya kembali seperti yang terlihat di bawah, tapi saya kehilangan dua garis miring yang muncul dalam versi string di atas, yang pada gilirannya merusak kode karena url
tidak valid.
Mengapa konversi saya kembali ke NSURL
menghapus dua garis miring maju dari String
saya berikan, dan bagaimana saya bisa mengkonversi kembali ke NSURL
garis miring tiga yang berisi?
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
Jawaban:
fileURLWithPath()
digunakan untuk mengonversi jalur file biasa (mis. "/ path / ke / file") ke URL. AndaurlString
adalah string URL lengkap termasuk skema, jadi sebaiknya Anda gunakanuntuk mengubahnya kembali ke
NSURL
. Contoh:sumber
URL(string: urlstring)
Di Swift 4 dan Swift 3 , Untuk mengonversi String ke URL:
atau,
Dan untuk mengkonversi URL ke String:
Yang di bawah ini mengubah 'isi' dari url ke string
sumber
String(contentsOf: URL)
mengembalikan muatan aktual sumber daya itu, bukan URL dalam format string. GunakanURL.absoluteString
untuk mendapatkan versi string dari URL. developer.apple.com/reference/foundation/nsurl/…Ada cara yang lebih baik untuk mendapatkan versi string path dari NSURL di Swift:
sumber
/questions/27062454/converting-url-to-string-and-back-again
untuk url/programming/27062454/converting-url-to-string-and-back-again
file://
formatnya.PEMBERITAHUAN : perhatikan url, itu
optional
dan itu bisanil
. Anda dapat membungkus url Anda dalam kutipan untuk mengubahnya menjadi string. Anda bisa mengujinya di taman bermain.Pembaruan untuk Swift 5, Xcode 11:
sumber
file:///Users/foo
). Sementara jika hanya jalur absolut diperlukan (pikirkan/Users/foo
), makaurl.path
harus digunakan seperti dalam jawaban @ iphaaw di bawah ini.sumber
Swift 3 (lupakan NSURL).
Untuk membuat URL dari string:
Jika kita ingin menambahkan nama file. Perhatikan, appendingPathComponent () menambahkan persen penyandian secara otomatis:
Ketika kita ingin memiliki String tetapi tanpa bagian root (perhatikan bahwa persen pengkodean dihapus secara otomatis):
Jika kita ingin menyimpan bagian root, kita melakukan ini (tapi ingat persentase penyandiannya - tidak dihapus):
Untuk secara manual menambahkan persen penyandian untuk string:
Untuk menghapus penyandian persen:
Pengkodean persen penting karena URL untuk permintaan jaringan memerlukannya, sementara URL ke sistem file tidak selalu berfungsi - tergantung pada metode aktual yang menggunakannya. Peringatan di sini adalah bahwa mereka dapat dihapus atau ditambahkan secara otomatis, jadi lebih baik debug konversi ini dengan hati-hati.
sumber
Kode versi Swift 3:
sumber
2020 | SWIFT 5.1:
Dan ekstensi untuk
URL?
pemakaian:
sumber
sumber