Reputation: 61
I'm relatively new to developing iOS apps.
I'm developing a "note-app" where users can type in info in a text field, hit Save and then have the opportunity to completely exit the app, re-open, and the info gets loaded with a button.
I'm currently using Xcode 4.5.
I've coded all of it and something weird happens. I type in something in every textfield (I have twelve), hit Save, and exit the app. When I reopen the app and hit Load, the text from textfield 12 loads in textfield 1. And all the other text are gone. Why is that happening?
SecondViewController.h
@interface SecondViewController : UIViewController <UITextFieldDelegate>
{
IBOutlet UITextField *myTextField;
IBOutlet UITextField *myTextField2;
IBOutlet UITextField *myTextField3;
IBOutlet UITextField *myTextField4;
IBOutlet UITextField *myTextField5;
IBOutlet UITextField *myTextField6;
IBOutlet UITextField *myTextField7;
IBOutlet UITextField *myTextField8;
IBOutlet UITextField *myTextField9;
IBOutlet UITextField *myTextField10;
IBOutlet UITextField *myTextField11;
IBOutlet UITextField *myTextField12;
IBOutlet UILabel *loaded;
}
-(IBAction)save:(id)sender;
-(IBAction)load:(id)sender;
SecondViewController.m
@implementation SecondViewController
-(IBAction)save:(id)sender
{
//First Save String
NSString *savestring =myTextField.text;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:savestring forKey:@"saveString"];
[defaults synchronize];
//Second Save String
NSString *savestring2 =myTextField2.text;
NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults];
[defaults2 setObject:savestring2 forKey:@"saveString2"];
[defaults2 synchronize];
//Third Save String
NSString *savestring3 =myTextField3.text;
NSUserDefaults *defaults3 = [NSUserDefaults standardUserDefaults];
[defaults3 setObject:savestring3 forKey:@"saveString3"];
[defaults3 synchronize];
//Fourth Save String
NSString *savestring4 =myTextField4.text;
NSUserDefaults *defaults4 = [NSUserDefaults standardUserDefaults];
[defaults4 setObject:savestring4 forKey:@"saveString4"];
[defaults4 synchronize];
//Fifth Save String
NSString *savestring5 =myTextField5.text;
NSUserDefaults *defaults5 = [NSUserDefaults standardUserDefaults];
[defaults5 setObject:savestring5 forKey:@"saveString5"];
[defaults5 synchronize];
//Sixth Save String
NSString *savestring6 =myTextField6.text;
NSUserDefaults *defaults6 = [NSUserDefaults standardUserDefaults];
[defaults6 setObject:savestring6 forKey:@"saveString6"];
[defaults6 synchronize];
//Seventh Save String
NSString *savestring7 =myTextField7.text;
NSUserDefaults *defaults7 = [NSUserDefaults standardUserDefaults];
[defaults7 setObject:savestring7 forKey:@"saveString7"];
[defaults7 synchronize];
//Eight Save String
NSString *savestring8 =myTextField8.text;
NSUserDefaults *defaults8 = [NSUserDefaults standardUserDefaults];
[defaults8 setObject:savestring8 forKey:@"saveString8"];
[defaults8 synchronize];
//Ninth Save String
NSString *savestring9 =myTextField9.text;
NSUserDefaults *defaults9 = [NSUserDefaults standardUserDefaults];
[defaults9 setObject:savestring9 forKey:@"saveString9"];
[defaults9 synchronize];
//Tenth Save String
NSString *savestring10 =myTextField10.text;
NSUserDefaults *defaults10 = [NSUserDefaults standardUserDefaults];
[defaults10 setObject:savestring10 forKey:@"saveString10"];
[defaults10 synchronize];
//Eleventh Save String
NSString *savestring11 =myTextField11.text;
NSUserDefaults *defaults11 = [NSUserDefaults standardUserDefaults];
[defaults11 setObject:savestring11 forKey:@"saveString11"];
[defaults11 synchronize];
//Twelvth Save String
NSString *savestring12 =myTextField12.text;
NSUserDefaults *defaults12 = [NSUserDefaults standardUserDefaults];
[defaults12 setObject:savestring12 forKey:@"saveString12"];
[defaults12 synchronize];
loaded.text = @"Dine notater ble lagret!";
}
-(IBAction)load:(id)sender;
{
//First Load String
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadstring = [defaults objectForKey:@"saveString"];
[myTextField setText:loadstring];
[loaded setText:@"Dine notater ble lastet inn!"];
//Second Load String
NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults];
NSString *loadstring2 = [defaults2 objectForKey:@"saveString2"];
[myTextField setText:loadstring2];
[loaded setText:@"Dine notater ble lastet inn!"];
//Third Load String
NSUserDefaults *defaults3 = [NSUserDefaults standardUserDefaults];
NSString *loadstring3 = [defaults3 objectForKey:@"saveString3"];
[myTextField setText:loadstring3];
[loaded setText:@"Dine notater ble lastet inn!"];
//Forth Load String
NSUserDefaults *defaults4 = [NSUserDefaults standardUserDefaults];
NSString *loadstring4 = [defaults4 objectForKey:@"saveString4"];
[myTextField setText:loadstring4];
[loaded setText:@"Dine notater ble lastet inn!"];
//Fifth Load String
NSUserDefaults *defaults5 = [NSUserDefaults standardUserDefaults];
NSString *loadstring5 = [defaults5 objectForKey:@"saveString5"];
[myTextField setText:loadstring5];
[loaded setText:@"Dine notater ble lastet inn!"];
//Sixth Load String
NSUserDefaults *defaults6 = [NSUserDefaults standardUserDefaults];
NSString *loadstring6 = [defaults6 objectForKey:@"saveString6"];
[myTextField setText:loadstring6];
[loaded setText:@"Dine notater ble lastet inn!"];
//Seventh Load String
NSUserDefaults *defaults7 = [NSUserDefaults standardUserDefaults];
NSString *loadstring7 = [defaults7 objectForKey:@"saveString7"];
[myTextField setText:loadstring7];
[loaded setText:@"Dine notater ble lastet inn!"];
//Eight Load String
NSUserDefaults *defaults8 = [NSUserDefaults standardUserDefaults];
NSString *loadstring8 = [defaults8 objectForKey:@"saveString8"];
[myTextField setText:loadstring8];
[loaded setText:@"Dine notater ble lastet inn!"];
//Ninth Load String
NSUserDefaults *defaults9 = [NSUserDefaults standardUserDefaults];
NSString *loadstring9 = [defaults9 objectForKey:@"saveString9"];
[myTextField setText:loadstring9];
[loaded setText:@"Dine notater ble lastet inn!"];
//Tenth Load String
NSUserDefaults *defaults10 = [NSUserDefaults standardUserDefaults];
NSString *loadstring10 = [defaults10 objectForKey:@"saveString10"];
[myTextField setText:loadstring10];
[loaded setText:@"Dine notater ble lastet inn!"];
//Eleventh Load String
NSUserDefaults *defaults11 = [NSUserDefaults standardUserDefaults];
NSString *loadstring11 = [defaults11 objectForKey:@"saveString11"];
[myTextField setText:loadstring11];
[loaded setText:@"Dine notater ble lastet inn!"];
//Twelvth Load String
NSUserDefaults *defaults12 = [NSUserDefaults standardUserDefaults];
NSString *loadstring12 = [defaults12 objectForKey:@"saveString12"];
[myTextField setText:loadstring12];
[loaded setText:@"Dine notater ble lastet inn!"];
}
For those who are not Norwegian, "Dine notater ble lastet inn!" and "Dine notater ble lagret!" mean saved and loaded.
Upvotes: 0
Views: 915
Reputation: 17143
As you load each string, you are setting 'myTextField' over and over again. That is the first field.
BTW, it is not necessary to get a pointer to the standard user defaults for each field you want to read/write.
Upvotes: 0
Reputation: 7323
Every where you have setting the data on myTextField [myTextField setText:loadstring];
it should be myTextfield1,2,3.... and so on .
Also you don't have to initialize NSUserDefaults every time .NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
just define it at the top of the function.
Upvotes: 1