• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

lx88

Stina Lohmann
Registriert
02.09.09
Beiträge
1.027
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 :)
 

OneCent

Becks Apfel (Emstaler Champagner)
Registriert
28.03.11
Beiträge
335
Hmm... was ist diese count variable?

int count = count + 1;

Ich würde mal debuggen und schauen mit welchem index du jeweils zugreifst.
 

IceCake97

Gloster
Registriert
03.05.12
Beiträge
63
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
 

Tobias Scholze

Apfeltalk Entwicker
AT Redaktion
Registriert
15.07.09
Beiträge
1.581
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