• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Wieso ersetzt die Methode "addObject" alle vorherigen Objekte in meinem NSMutableArray?

IceCake97

Gloster
Registriert
03.05.12
Beiträge
63
Hallo!

Ich möchte in ein NSMutableArray den Text von einem Textfeld speichern, also:

[array addObject: myTextField.text];

Drückt man auf einen Button, erscheint ein anderer Text im Textfeld, den man dann wieder ins Array hinzufügen kann.

In einem anderen Textfeld möchte ich diesen Text dann wieder anzeigen:

-(IBAction)naechsterText:(id)sender
{
int count = count + 1;

mySecondTextField.text = [array objectAtIndex:count];
}

Über die Action "naechsterText" erscheint das nächste Objekt aus dem array auf dem Textfeld.

Das funktioniert ganz gut, doch wenn ich später erneut ein Objekt ins array hinzufüge, ersetzt es alle vorherigen Objekte. Mit NSUserDefaults habe ich es auch schon probiert, doch es kommt das gleiche Ergebnis heraus...

Weiß jemand, was man dagegen machen kann?

LG,
IceCake
 
Hallo,
falls es nicht den Rahmen sprengt wäre es vll. ganz hilfreich die entsprechenden Klassen hier zu posten, dann fällt die Fehlversuche etwas leichter :)
 
Hmm... was ist diese count variable?

int count = count + 1;

Ich würde mal debuggen und schauen mit welchem index du jeweils zugreifst.
 
Das ist die entsprechende Klasse:

ViewController.h:


@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
{

int count;


NSMutableArray *favoritenArray;
NSMutableArray *favArray;


NSString *witzePath;
NSString *witzeContent;
NSArray *witzeString;
NSString *witzeStringsInOneLine;
}


@property (weak, nonatomic) IBOutlet UITextView *witzeTextField;
@property (weak, nonatomic) IBOutlet UITextView *favoritenTextField;






- (IBAction)nextJoke:(id)sender;
- (IBAction)addFavorit:(id)sender;


- (IBAction)nextFavorit:(id)sender;






ViewController.m:


- (void)viewDidLoad
{
[super viewDidLoad];

count = 0;

favoritenArray = [[NSMutableArray alloc]init ];


favArray = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults]objectForKey:@"FavoritenKey"]];

if ([favArray count] == 0)
{
favoritenTextField.text = @"Du hast noch keine Favoriten gespeichert!";
}
else
{
favoritenTextField.text = [favArray objectAtIndex:0];
}

witzePath = [[NSBundle mainBundle] pathForResource:@"Witze" ofType:@"txt"];

witzeContent = [NSString stringWithContentsOfFile:witzePath encoding:NSUTF8StringEncoding error:NULL];

witzeString = [witzeContent componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];

witzeStringsInOneLine = [witzeString objectAtIndex:0];

}




- (IBAction)nextJoke:(id)sender
{
count = count + 1;


witzePath = [[NSBundle mainBundle] pathForResource:@"Witze" ofType:@"txt"];

witzeContent = [NSString stringWithContentsOfFile:witzePath encoding:NSUTF8StringEncoding error:NULL];

witzeString = [witzeContent componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];

witzeStringsInOneLine = [witzeString objectAtIndex:count];

witzeTextView.text = witzeStringsInOneLine;
}


- (IBAction)addFavorit:(id)sender
{
[favoritenArray addObject:FavoriteTextField.text];

[[NSUserDefaults standardUserDefaults] setObject:favoritenArray forKey:@"FavoritenKey"];
}


- (IBAction)nextFavorit:(id)sender
{
count = count + 1;

FavoriteTextField.text = [favArray objectAtIndex:count];
}


Ich habe eine Witze.txt Datei, in der einige Witze gespeichert sind. Mit den Funktionen "WitzePath", "WitzeContent", "WitzeString" und "WitzeStringsInOneLine" lese ich die Textdatei aus und schreibe die Zeile, die dem Wert von "count" entspricht in das Textfeld. Das "favoritenArray" ist das Array, in dem ich den Witz als Favorit speichere und das "favArray" is das Array, in dem ich "favoritenArray" mit NSUserDefaults speichere...

Ich hoffe, dass es jetzt etwas verständlicher ist :-)
LG,
IceCake
 
Hi,
int count = count + 1 // <-- ich frag mich eh warum da der debugger nicht motzt. mache doch hier einfach einmal ein anstatt dem code ein count++.

Du benoetigst ja eine "globale" variable. da du hast hier aber mit "int count" in der methode eine lokale.

Versuch ist es wert. :)

LG, Tobi