1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

NSMutableArray = NSString + NSMutableArray

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Mr.Sailer, 14.01.09.

  1. Mr.Sailer

    Mr.Sailer Boskop

    Dabei seit:
    08.09.07
    Beiträge:
    204
    Hallo,

    Ich habe schon wieder ein Problem wo ich einfach nicht weiter komme.
    Ich habe ein NSMutableArray. Jetzt möchte ich bei jedem Objekt in diesem Array ein String davor anhängen.
    Ich habe mir das bis jetzt so überlegt:
    Code:
    int i; 
        int count; 
        for (i = 0, count = [pathCont count]; i < count; i = i + 1) 
        { 
        [MutSelectedPath setString: selectedObject];
        [MutSelectedPath appendString:[pathCont objectAtIndex:i]];
        [PathAndDatei addObject: MutSelectedPath];
        }
    
    Das Problem ist das selectedObject ein NSString sein muss und kein NSMutableString sein darf.
    MutSelectedPath ist ein NSMutableString.

    Wenn ich das Probemm starte macht es an dieser Stelle gar nichts mehr.

    Habe ich ein Überlegungsfehler?

    Vielen Dank für eure Hilfe.

    MfG
    Mr. Sailer
     
  2. tharwan

    tharwan Englischer Kantapfel

    Dabei seit:
    01.09.07
    Beiträge:
    1.085
    Kannst du mal erklären was deine Variablen sind? MutSelectedPath, selectedObject und PathAndDatei und was genau in pathCont drinne steht.

    NSMutableString ist eine Subklasse von NSString und erbt eigentlich alle Funktionen.

    Im allgemeinen ist es nicht so günstig auf eine Array was man verändert im Schleifenkopf zuzugreifen. mach das lieber in der Initialisierung int count = [array count] oder arbeite mit einer Kopie.

    wenn du durch pathCont interrierst warum greifst du dann in der schleife nie darauf zu?

    sollte da nicht irgendwo so was stehen wie:

    NSString* zusatz = @"das soll vor den String";
    NSString* path;
    for-Schleife:
    path=[zusatz stringByAppendingString:[pathCont objectAtIndex:i]];
    [pathCont replaceObjectAtIndex:i withObject: path];
     
  3. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    [PathAndDatei addObject: [NSString stringWithString: MutSelectedPath]];

    PS: Ich empfehle dringend, im Quelltext niemals Sprachen zu mischen (z.B. "PathAndDatei"). Reines Englisch ist in vielerlei Hinsicht langfristig die einfachste Loesung.

    PPS: Vielleicht sollte man das ja doch explizit erklaeren: Dein Problem ist, dass Du staendig dieselbe NSMutableString-Instanz wieder zu Deinem NSMutableArray hinzufuegst. Und das willst Du ja gar nicht, sondern einzelne NSStrings, wie Du richtig erkannt hast. Die reine Tatsache, dass NSMutableStrings zu einem NSMutableArray hinzugefuegt werden, ist hingegen kein Problem. Ein NSMutableString ist schliesslich auch ein NS(CF)String. :D

    PPPS (Mir gehen die "P"s aus): Einfacher waer's uebrigens so:

    Code:
    for (i = 0, count = [pathCont count]; i < count; i = i + 1) {
    	[PathAndDatei addObject: [selectedObject stringByAppendingPathComponent: [pathCont objectAtIndex: i]]]
    }
    Dann musst Du Dich auch nicht explizit um den Slash zwischen Ordner-Pfad und Dateiname kuemmern. Und falls Du's Dir zielplattformtechnisch leisten kannst, schau Dir mal Fast Enumeration an. Die macht das Ganze dann noch huebscher.
     
    Mr.Sailer gefällt das.
  4. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Warum [NSString stringWithString: MutSelectedPath] und nicht nicht MutSelectedPath?
     
  5. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Siehe PPS -- weil er sonst x-mal dieselbe Instanz in seinem Array hat, und das heisst wiederum, dass der Inhalt des Arrays sich mit jedem Durchlauf komplett aendert.

    (Symbolisch: a -> bb -> ccc -> dddd -> ...)
     
  6. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Wenn der String eine Beziehung zu dem nachfolgendem Objekt hat, warum nimmt nicht einfach eine Container Klasse?
     
  7. Mr.Sailer

    Mr.Sailer Boskop

    Dabei seit:
    08.09.07
    Beiträge:
    204
    Vielen Dank für die Antworten.
    Mit Peter Maurers Vorschlag hat es geklappt. (Und ich verstehe sogar wieso :D )
     

Diese Seite empfehlen