Konvertieren des Dateipfads von NSString in NSURL
Arbeite ich durch Kakao glatt, aber dieses problem scheint so einfach es bricht all die coolen Sachen, die ich gelernt habe. :/
Habe ich eine generierte Datei Weg, und es muss in NSURL-format. Aus der Forschung, dies ist der code, den ich schrieb:
NSLog(@"Old path = %@", pathToFile);
NSURL *xmlURL = [[[NSURL alloc] init] fileURLWithPath:pathToFile];
NSLog(@"New path = %@", [xmlURL absoluteString]);
Und die Ausgabe:
2010-01-27 15:39:22.105 MusicLibraryStats[28574:a0f] Old path = file://localhost/Users/[username]/Music/iTunes/iTunes%20Music%20Library.xml
2010-01-27 15:39:22.105 MusicLibraryStats[28574:a0f] New path = (null)
First off, das alloc-init sollte nicht einmal nötig sein; andere Leute scheinen, Weg mit ihm. In diesem Fall, wenn ich nicht alloc-init, bekomme ich eine "unrecognized selector' Fehler auf dieser Linie. Natürlich, jetzt bin ich auch einfach nur plain old (null).
Wo habe ich Filmfehler?
Dank!
InformationsquelleAutor der Frage spamguy | 2010-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
[[NSURL alloc] init]
ist nicht nur unnötig, es ist ungültig.fileURLWithPath:
ist eine Klasse Methode, was bedeutet, können Sie nur rufen Sie es auf das class-Objekt (NSURL
selbst). Es nicht zu einem compile-Fehler, weil-(NSURL *)init
gibt ein Objekt vom Typid
, und führen nicht zu einem Laufzeitfehler, weil-(NSURL *)init
tatsächlich gibtnil
, und gesendeten Nachrichten zunil
wird nur cascade ein weiteresnil
als Ihren Rückgabewert.Sollte dieser code funktionieren:Ich das problem gefunden.
-[NSOpenPanel URLs]
gibt ein array zurück, der NSURL-Objekte, die Sie behandeln, als NSString-Objekte. Das ist nicht richtig. Sie sollten die folgenden:Dem debugger konnte ich Ihnen zeigen, dass, wenn Sie schaute auf die
pathToFile
variable. Vergewissern Sie sich, dass es beim nächsten mal. 🙂 Schwebt eine variable mit der Maus bekommen sollten Sie Ihren Typ.Beachten Sie jedoch, dass es Situationen gibt, wo man berechtigterweise Begegnung einer anderen Art als die, die Sie erwartet. Zum Beispiel, die privaten NSPathStore2 Klasse ist Teil der NSString-cluster, und Sie können alles tun, was NSString unterstützt auf NSPathStore2 Objekte. (Wenn dies geschieht, und Sie sind sich nicht sicher, überprüfen Sie die Dokumentation, um zu sehen, wenn der Typ, den Sie erwarten, ist ein cluster-Typ ist. Das ist, wie Sie genannt sind in der Dokumentation).
InformationsquelleAutor der Antwort zneak