• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Leerzeichen aus URL-String ersetzen

lowflyer7

Cripps Pink
Registriert
29.01.08
Beiträge
154
Hallo zusammen,

bin absoluter Neuling was Objective-C angeht und habe daher ein recht einfaches Problem. Ich lasse in meinem Programm mit NSOpenPanel eine Datei aussuchen, deren Pfad ich anschließend anzeigen lassen will. Die URL-Methode liefert mir die Leerzeichen als %20 zurück und ich möchte sie mit Leerzeichen darstellen lassen. Ich habe jetzt schon:

Code:
        [COLOR=#703daa]NSMutableString[/COLOR] *selectedFilename = [[browserWindow [COLOR=#3d1d81]URLs[/COLOR]] [COLOR=#3d1d81]objectAtIndex[/COLOR]:[COLOR=#272ad8]0[/COLOR]];
[COLOR=#3D1D81][COLOR=#000000]        [selectedFilename [/COLOR]stringByReplacingPercentEscapesUsingEncoding[COLOR=#000000]:[/COLOR]NSUTF8StringEncoding[COLOR=#000000]];[/COLOR][/COLOR]
        [COLOR=#4f8187]_showFileName[/COLOR].[COLOR=#3d1d81]stringValue[/COLOR] = selectedFilename;

sowie

Code:
        [COLOR=#703daa]NSMutableString[/COLOR] *selectedFilename = [[browserWindow [COLOR=#3d1d81]URLs[/COLOR]] [COLOR=#3d1d81]objectAtIndex[/COLOR]:[COLOR=#272ad8]0[/COLOR]];
[COLOR=#3D1D81][COLOR=#000000]        [selectedFilename [/COLOR]stringByReplacingOccurrencesOfString[COLOR=#000000]:[/COLOR][COLOR=#d12f1b]@"%20"[/COLOR]withString[COLOR=#000000]:[/COLOR][COLOR=#d12f1b]@" "[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
        [COLOR=#4f8187]_showFileName[/COLOR].[COLOR=#3d1d81]stringValue[/COLOR] = selectedFilename;

ausprobiert, aber beides hatte nicht den gewünschten Erfolg. Habt Ihr einen Tip für mich?

Vielen Dank!

Andreas
 
Sowohl stringByReplacingPercentEscapesUsingEncoding, als auch stringByReplacingOccurrencesOfString geben dir ein String-Objekt zurueck und veraendern nicht dein "selectedFilename".

Gehen wuerde es so:

Code:
NSString *selectedFilename = [[[browserWindow URLs] objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

_showFileName.stringValue = selectedFilename;
 
Die noch bessere Herangehensweise wäre allerdings, sich um solche Interna überhaupt nicht zu kümmern. Es reicht, wenn Du der URL sagst, dass Du einen Dateisystempfad haben willst. Dein Code enthält übrigens auch den Fehler, URLs einem String zuzuweisen. Korrekt wäre:

Code:
NSURL *firstURL;
NSString *selectedPath;

firstURL = [[browserWindow URLs] objectAtIndex:0];
if ([firstURL isFileURL])
    selectedPath = [firstURL path];
else
    selectedPath = @"";
[[self showFileName] setStringValue: selectedPath];