Convertire un NSURL in un NSString


336

Ho un'app in cui l'utente può scegliere un'immagine dalle immagini dell'app incorporate o dalla libreria di foto di iPhone. Uso un oggetto Occasione che ha una NSStringproprietà per salvare il file imagePath.

Ora, nel caso delle immagini dell'app integrate, ottengo il nome del file come NSStringsalvataggio in [occasion imagePath]. Ma nel secondo caso in cui l'utente seleziona un'immagine dalla libreria di foto, ne ottengo una NSURLche desidero convertire in una NSStringper poterla salvare [occasion imagePath].

È possibile convertire il NSURLin un NSString?

Risposte:


682

In Objective-C:

NSString *myString = myURL.absoluteString;

In Swift:

var myString = myURL.absoluteString

Maggiori informazioni nei documenti :


132

Se sei interessato alla stringa pura:

[myUrl absoluteString];

Se sei interessato al percorso rappresentato dall'URL (e da utilizzare con NSFileManagermetodi ad esempio):

[myUrl path];

Ciao, grazie per la tua risposta. Come sto cercando di caricare l'immagine dal straing ho salvato, sono davvero interessato a quello che lei ha citato sull'utilizzo NSFileManager con [myUril path];Quando ho usato il percorso invece di absoluteString mi ha dato il nome asset.jpgPotrebbe suppliche eelaborate più come utilizzare questo a caricare l'immagine in un'istanza di UIImage?
Ali,

Ciao. Naturalmente dal nome del file per ottenere un percorso reale del file system è necessario sapere dove è archiviato il file e quindi creare il percorso completo (directory + nome file) componendoli usando la stringa di NSStringByAppendingPathComponent:. L'unica eccezione a questa regola è quando sapere che l'immagine è memorizzata nel pacchetto dell'app, in questo caso puoi semplicemente usare la chiamata [UIImage imageNamed: "name"] che fa tutto il lavoro per te. Ma negli altri casi devi specificare il tuo percorso completo.
viggio24,

Ciao, grazie ancora per la tua risposta. Sono ancora confuso su come caricare l'immagine su un UIImage usando questo NSString assets-library://asset/asset.JPG?id=1000000001&ext=JPGche ho salvato convertendo il risultato [myUrl absoluteString]dopo averlo convertito in un NSString. Qui ho fatto questa domanda al riguardo, ma non ho avuto risposta. Ti sarei grato se riuscissi a
Ali

2
sì, dovremmo usare myUrl.path invece di myUrl.absoluteString quando vuoi usarlo con NSFileManager, grazie Viggo24 !!
flypig,

Dal momento che hai un assets-libraryURL, piuttosto che fileuno, è incompatibile con NSFileManager. L'accesso a tali URL è controllato rigorosamente da ALAssetsLibrary.
Mike Abdullah,

46

Prova questo in Swift:

var urlString = myUrl.absoluteString

Objective-C:

NSString *urlString = [myURL absoluteString];

Ho usato NSString * urlString = [myURL absoluteString]; Ma avevo riscontrato questo errore e xcode si è bloccato. - [__ NSCFString absoluteString]: selettore non riconosciuto inviato all'istanza 0x791a18e0
Võ Mai Trinh

@ VõMaiTrinh significa che il tuo myURLè un oggetto della classe NSString. Poiché NSString non ha absoluteStringmetodo, porta a un arresto anomalo.
berillio il

17

Aggiornamento rapido:

var myUrlStr : String = myUrl.absoluteString

10
Si potrebbe omettere Stringpoiché Swift utilizza l'inferenza di tipo.
Salavat Khanov,

In realtà dovrebbe omettere String- la progettazione linee guida Swift cercare di ottenere il codice po 'ridondante possibile.
Ritorna vero l'

1

Ho appena combattuto con questa cosa e questo aggiornamento non ha funzionato.

Questo alla fine ha fatto in Swift:

let myUrlStr : String = myUrl!.relativePath!

1

Puoi usare qualsiasi modo

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

o

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

In Swift: - var str_url = yourUrl.absoluteString

Ne risulterà un URL in stringa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.