Konvertieren Sie eine NSURL in einen NSString

336

Ich habe eine App, in der der Benutzer ein Bild entweder aus den integrierten App-Bildern oder aus der iPhone-Fotobibliothek auswählen kann. Ich verwende ein Objekt Occasion, das eine NSStringEigenschaft hat, um das zu speichern imagePath.

Jetzt bekomme ich bei den eingebauten App-Images den Dateinamen als NSStringSpeicher in der [occasion imagePath]. Aber im zweiten Fall, in dem der Benutzer ein Bild aus der Fotobibliothek auswählt, erhalte NSURLich ein Bild, das ich in ein konvertieren möchte NSString, um es speichern zu können [occasion imagePath.

Ist es möglich, das NSURLin ein umzuwandeln NSString?

Ali
quelle

Antworten:

682

In Ziel-C:

NSString *myString = myURL.absoluteString;

In Swift:

var myString = myURL.absoluteString

Weitere Infos in den Dokumenten :

Randall
quelle
132

Wenn Sie an der reinen Saite interessiert sind:

[myUrl absoluteString];

Wenn Sie an dem Pfad interessiert sind, der durch die URL dargestellt wird (und der beispielsweise mit NSFileManagerMethoden verwendet werden soll):

[myUrl path];
viggio24
quelle
Hallo, danke für deine Antwort. Als ich versuche , das Bild von der laden Straing ich gerettet, ich bin wirklich interessiert , was Sie erwähnt über die Verwendung von NSFileManager mit [myUril path];Wenn ich Pfad anstelle von absoluteString es mir den Namen gab asset.jpgKönnten Sie Bitten eelaborate mehr , wie diese zu verwenden , um das Bild in eine UIImage-Instanz laden?
Ali
Hallo. Um einen echten Dateisystempfad zu erhalten, müssen Sie natürlich anhand des Dateinamens wissen, wo die Datei gespeichert ist, und dann den vollständigen Pfad (Verzeichnis + Dateiname) erstellen, indem Sie sie mit der Zeichenfolge StringByAppendingPathComponent von NSString zusammenstellen: Die einzige Ausnahme von dieser Regel ist, wenn Sie Wenn Sie wissen, dass das Bild im App-Bundle gespeichert ist, können Sie in diesem Fall einfach den Aufruf [UIImage imageNamed: "name"] verwenden, der den gesamten Job für Sie erledigt. In den anderen Fällen müssen Sie jedoch Ihren vollständigen Pfad angeben.
Viggio24
Hallo, nochmals vielen Dank für Ihre Antwort. Ich bin immer noch verwirrt darüber, wie das Bild mit diesem NSString in ein UIImage geladen wird, assets-library://asset/asset.JPG?id=1000000001&ext=JPGdas ich durch Konvertieren des Ergebnisses [myUrl absoluteString]nach dem Konvertieren in einen NSString gespeichert habe. Hier habe ich diese Frage zu diesem Thema gestellt, aber keine Antwort erhalten. Ich würde es begrüßen,
Ali
2
Ja, wir sollten myUrl.path anstelle von myUrl.absoluteString verwenden, wenn Sie es mit NSFileManager verwenden möchten, danke Viggo24 !!
Flypig
Da Sie keine assets-libraryURL, sondern eine URL haben, fileist diese nicht kompatibel mit NSFileManager. Der Zugriff auf solche URLs wird streng von kontrolliert ALAssetsLibrary.
Mike Abdullah
46

Versuchen Sie dies in Swift:

var urlString = myUrl.absoluteString

Ziel c:

NSString *urlString = [myURL absoluteString];
Beryllium
quelle
Ich habe NSString verwendet * urlString = [myURL absoluteString]; Aber ich hatte diesen Fehler festgestellt und xcode war abgestürzt. - [__ NSCFString absoluteString]: nicht erkannter Selektor an Instanz 0x791a18e0 gesendet
Võ Mai Trinh
@ VõMaiTrinh bedeutet, dass Sie myURLein Objekt der NSString-Klasse sind. Da NSString keine absoluteStringMethode hat, führt dies zu einem Absturz.
Beryllium
17

Schnelles Update:

var myUrlStr : String = myUrl.absoluteString
kmiklas
quelle
10
Sie können dies weglassen, Stringda Swift die Typinferenz verwendet.
Salavat Khanov
Sie sollten es eigentlich weglassen String- die Swift Design Guidelines versuchen, so wenig redundanten Code wie möglich zu erreichen.
Rückgabe wahr
1

Ich habe gerade mit genau dieser Sache gekämpft und dieses Update hat nicht funktioniert.

Dies geschah schließlich in Swift:

let myUrlStr : String = myUrl!.relativePath!
Speedz
quelle
1

Sie können einen beliebigen Weg verwenden

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

oder

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
quelle
0

In Swift: - var str_url = yourUrl.absoluteString

Es wird eine URL in der Zeichenfolge angezeigt.

Kangna Sharma
quelle