Ubah NSURL menjadi NSString


336

Saya memiliki aplikasi tempat pengguna dapat memilih gambar baik dari gambar aplikasi bawaan atau dari perpustakaan foto iphone. Saya menggunakan Acara objek yang memiliki NSStringproperti untuk menyimpan imagePath.

Sekarang dalam kasus gambar aplikasi built-in saya mendapatkan nama file sebagai NSStringsimpan di [occasion imagePath]. Tetapi dalam kasus ke-2 di mana pengguna mengambil gambar dari perpustakaan foto saya mendapatkan NSURLyang saya ingin konversikan ke NSStringuntuk dapat menyimpannya di [occasion imagePath].

Apakah mungkin untuk mengonversikan NSURLke NSString?

Jawaban:


682

Dalam Objective-C:

NSString *myString = myURL.absoluteString;

Dalam Swift:

var myString = myURL.absoluteString

Info lebih lanjut dalam dokumen :


132

Jika Anda tertarik dengan string murni:

[myUrl absoluteString];

Jika Anda tertarik pada jalur yang diwakili oleh URL (dan untuk digunakan dengan NSFileManagermetode misalnya):

[myUrl path];

Hai, Terima kasih atas jawaban Anda. Saat saya mencoba memuat gambar dari straing yang saya simpan, saya benar-benar tertarik dengan apa yang Anda sebutkan tentang menggunakan NSFileManager dengan [myUril path];Ketika saya menggunakan path, bukan absolut. asset.jpgString memberi saya nama. memuat gambar ke instance UIImage?
Ali

Hai. Tentu saja dari nama file untuk mendapatkan jalur sistem file nyata, Anda perlu tahu di mana file disimpan dan kemudian membuat path lengkap (direktori + nama file) dengan menyusunnya menggunakan string NSStringByAppendingPathComponent:. Satu-satunya pengecualian untuk aturan ini adalah ketika Anda tahu gambar disimpan dalam bundel aplikasi, dalam hal ini Anda bisa menggunakan panggilan [UIImage imageNamed: "name"] yang melakukan pekerjaan penuh untuk Anda. Tetapi dalam kasus lain Anda harus menentukan path lengkap Anda.
viggio24

Hai, terima kasih lagi untuk jawaban Anda. Saya masih bingung tentang cara memuat gambar ke UIImage menggunakan NSString ini assets-library://asset/asset.JPG?id=1000000001&ext=JPGyang saya simpan dengan mengonversi hasil [myUrl absoluteString]setelah mengonversinya ke NSString. Di sini saya membuat pertanyaan tentang hal ini tetapi tidak mendapat jawaban. Saya akan sangat menghargai jika Anda dapat menjawabnya [ stackoverflow.com/questions/8085267/…
Ali

2
ya, kita harus menggunakan myUrl.path bukan myUrl.absoluteString ketika Anda ingin menggunakannya dengan NSFileManager, terima kasih Viggo24 !!
flypig

Karena Anda memiliki assets-libraryURL, bukan URL, URL fileitu tidak kompatibel dengan NSFileManager. Akses ke URL tersebut dikontrol secara ketat oleh ALAssetsLibrary.
Mike Abdullah

46

Coba ini di Swift:

var urlString = myUrl.absoluteString

Tujuan-C:

NSString *urlString = [myURL absoluteString];

Saya menggunakan NSString * urlString = [myURL absoluteString]; Tetapi saya telah menemukan kesalahan ini dan xcode macet. - [__ NSCFString absoluteString]: pemilih yang tidak dikenal dikirim ke instance 0x791a18e0
Võ Mai Trinh

@ VõMaiTrinh itu berarti Anda myURLadalah objek dari kelas NSString. Karena NSString tidak memiliki absoluteStringmetode maka mengarah ke crash.
berilium

17

Pembaruan cepat:

var myUrlStr : String = myUrl.absoluteString

10
Anda dapat menghilangkan Stringkarena Swift menggunakan inferensi tipe.
Salavat Khanov

Anda sebenarnya harus menghilangkan String- Panduan Desain Swift mencoba untuk mencapai kode redundan sesedikit mungkin.
mengembalikan true

1

Saya hanya berjuang dengan hal ini dan pembaruan ini tidak berhasil.

Ini akhirnya terjadi di Swift:

let myUrlStr : String = myUrl!.relativePath!

1

Anda dapat menggunakan salah satu cara

NSString *string=[NSString stringWithFormat:@"%@",url1];

atau

NSString *str=[url1 absoluteString];

NSLog(@"string :: %@",string);

string :: file: ///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAAA1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

NSLog(@"str :: %@", str);

str :: file: ///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif


0

Di Swift: - var str_url = yourUrl.absoluteString Anda

Ini akan menghasilkan url dalam string.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.