2012-10-04 2 views
14

Ich habe eine NSURL aus einem NSSavePanel abgerufen. Ich jetzt diese NSURL habe, die mir folgendes ergibt:Wie bekomme ich die Pfad-/Verzeichniskomponente von einer NSURL?

file://localhost/Users/brett/Documents/asdf%20asdf.json

Nun ist es leicht für mich nur die Dateinamen abzurufen etwa wie folgt verwendet:

[[[NSFileManager defaultManager] displayNameAtPath:pathAndFilename] stringByDeletingPathExtension]

Das gibt mir nur der lokalisierte Dateiname, wie erwartet: asdf%20asdf

Also, wie bekomme ich den Pfad, so:file://localhost/Users/brett/Documents/

Antwort

27

Sie könnten NSString Methoden verwenden, um mit Dateipfaden zu arbeiten. Zum Beispiel könnten

NSString *directory = [[URL absoluteString] stringByDeletingLastPathComponent]; 
NSString *filename = [[URL absoluteString] lastPathComponent]; 

Sie andere nützliche Methoden in Apple-Docs: NSString Class Reference ->Arbeiten mit Pfaden Abschnitt

+0

Ich weiß, dass, so weit wie der Dateiname geht, ist es nicht eine lokalisierte Zeichenfolge ist. Deshalb habe ich die "displayNameAtPath:" -Nachricht für den NSFileManager verwendet. Gute Antwort aber! – Brett

+0

@Brett Anyway Ich denke, ich habe auf Ihre Frage über das Abrufen von Dateiverzeichnis beantwortet. Oder was hast du erwartet? – Nekto

+0

Sie haben richtig geantwortet, ich habe nur Angst mit einer NSString-Funktion anstelle einer NSURL-Funktion. Vielleicht sollte ich nicht sein. Vielen Dank! – Brett

30

-[NSURL URLByDeletingLastPathComponent] ist der einfachste Weg, dies zu erreichen.

+0

Viel besser als 'NSString'. – Nestor

+0

Erläuterung: NSURL directoryURL = [fileURL URLByDeletingLastPathComponent]; – iamjustaprogrammer

1

Direkt von Ihrem NSSavePanel:

NSSavePanel *savePanel; 
... 
NSString *path = savePanel.directoryURL.path;