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?

Ali
sumber

Jawaban:

682

Dalam Objective-C:

NSString *myString = myURL.absoluteString;

Dalam Swift:

var myString = myURL.absoluteString

Info lebih lanjut dalam dokumen :

Randall
sumber
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];
viggio24
sumber
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];
berilium
sumber
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
kmiklas
sumber
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!
Speedz
sumber
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

Shaik Thuphel
sumber
0

Di Swift: - var str_url = yourUrl.absoluteString Anda

Ini akan menghasilkan url dalam string.

kangna sharma
sumber