Ich habe zwei View-Controller. Der erste hat einen Übergang zu einem anderen View-Controller. Was ich für den letzten View-Controller möchte, ist das Hinzufügen von Elementen, die aus einem Textfeld kommen, und das Speichern in einem Array durch einen Klick auf die Schaltfläche. Dann wird dieses Array mit NSUserDefaults gespeichert.Behalten der Werte eines Arrays gespeichert mit NSUserDefaults
Auf den folgenden Code kann ich Elemente in meinem Array erfolgreich speichern. Dieses Array wird auch mit NSUserDefaults gespeichert. Wenn ich jedoch zu meinem ersten View-Controller zurückkehre und dann wieder mit meinem zweiten View-Controller fortfahre, um neue Elemente auf meinem Array hinzuzufügen, sind die zuvor gespeicherten Elemente verschwunden. Die neu hinzugefügten Artikel wurden als einzige gespeichert.
Jemand sagte, ich muss etwas Serialisierung machen, wie wird das gemacht? und wenn es eine andere Möglichkeit ist, Ratschläge bitte :)
in meinem .h-Datei
@interface AddCardViewController : UIViewController <UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *cardNameTextField;
@end
in meiner .m-Datei
@interface AddCardViewController()
@property (nonatomic, strong)NSMutableArray *nameOfCards;
@end
@implementation AddCardViewController
@synthesize cardNameTextField = _cardNameTextField;
@synthesize nameOfCards = _nameOfCards;
// setting my array
- (NSMutableArray *)nameOfCards
{
if (!_nameOfCards) _nameOfCards = [[NSMutableArray alloc] init];
return _nameOfCards;
}
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.cardNameTextField.delegate = self;
}
- (BOOL) textFieldShouldReturn:(UITextField *)textField{
[self.cardNameTextField resignFirstResponder];
return YES;
}
- (void)viewDidLoad
{
//getting the data saved
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *cardName = [defaults objectForKey:@"cardName"];
NSLog(@"contents of my array %@", cardName);
[super viewDidLoad];
}
- (IBAction)addNewCard:(id)sender {
[self.nameOfCards addObject:self.cardNameTextField.text];
NSLog(@"contents :%@", _nameOfCards);
// this is how to save the data
NSMutableArray *cardName = _nameOfCards;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:cardName forKey:@"cardName"];
[defaults synchronize];
NSLog(@"data saved");
}
@end
helfen, wenn Sie klicken addnewcard es Array in NSUserDefaults spart. Aber wenn Sie zu diesem Viewcontroller zurückkehren, ist Ihr Array gleich Null. Wenn Sie also etwas hinzufügen, wird es in Ihrem Array gespeichert und dann in userdefaults gespeichert. Also jedes Mal, wenn Sie neue Dinge in Array und Userdefaults hinzugefügt. –
in addNewCard-Methode - lesen Sie Daten von NSUserDefaults in NameOfCards, dann fügen Sie neue hinzu, dann speichern Sie – SVGreg
mögliche Duplikate von [So behalten Sie die Werte eines Arrays] (http://stackoverflow.com/questions/10069593/how-to- Retain-the-Werte eines Arrays –