• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

NSMutableArray = NSString + NSMutableArray

Mr.Sailer

Boskop
Registriert
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
 

tharwan

Englischer Kantapfel
Registriert
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];
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
[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.
 
  • Like
Reaktionen: Mr.Sailer

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Warum [NSString stringWithString: MutSelectedPath] und nicht nicht MutSelectedPath?
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Warum [NSString stringWithString: MutSelectedPath] und nicht nicht MutSelectedPath?

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 -> ...)
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Wenn der String eine Beziehung zu dem nachfolgendem Objekt hat, warum nimmt nicht einfach eine Container Klasse?
 

Mr.Sailer

Boskop
Registriert
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 )