So speichern Sie Daten mit NSUserDefaults mithilfe von Daten aus NSMutableArray
MeineNSMutableArray
wird in meiner .h Datei so deklariert
@property (strong, nonatomic) NSMutableArray * numbers;
Wie verwende ich das NSMutableArray zum Speichern der Daten, die zum Speichern eingegeben wurden?NSUserDefaults
Jede Hilfe wird geschätzt
Danke im Voraus
Code in .h Datei
@property (retain, nonatomic) IBOutlet UITableView *myTableView;
@property (strong, nonatomic) NSMutableArray * numbers;
Code in .m
@synthesize myTableView, numbers;
-(void) viewDidLoad
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:numbers forKey:@"numberArray"];
NSMutableArray *resultArray = [NSMutableArray arrayWithArray:[defaults objectForKey:@"numberArray"]];
[super viewDidLoad];
// instantiate our NSMutableArray
numbers = [[NSMutableArray alloc]initWithObjects:@"",@"", nil];
//Add a edit button
self.navigationItem.leftBarButtonItem = self.editButtonItem;
//Add the Add button
UIBarButtonItem * addButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target: self action: @selector(insertNewObject)];
self.navigationItem.rightBarButtonItem = addButton;
}
-(void) didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[myTableView setEditing:editing animated:animated];
}
-(void) insertNewObject
{
//Display a UIAlertView
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Enter HomeWork" message: @"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
}
#pragma mark - UITableView Datasource
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return numbers.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"cell";
UITableViewCell *cell = [ tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault
reuseIdentifier: cellIdentifier];
}
cell.textLabel.text = [numbers objectAtIndex:indexPath.row];
return cell;
}
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
//remove our NSMutableArray
[numbers removeObjectAtIndex:indexPath.row];
//remove from our tableView
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
#pragma mark - UITableView Delegate methods
#pragma mark - UIAlertViewDelegate Methods
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//Only perform the following actions if the user hits the ok button
if (buttonIndex == 1)
{
NSString * tmpTextField = [alertView textFieldAtIndex:0].text;
if(!numbers)
numbers = [[NSMutableArray alloc]init];
[numbers insertObject:tmpTextField atIndex:0];
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.myTableView insertRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
@end
Ok, in meiner App gibt es eine UITableView
Wenn der Benutzer auf die Schaltfläche "Plus" tippt, wird eine UIAlertView mit einem UITextField angezeigt. Wenn der Benutzer ein Wort eingibt, wird der Text an die UITableView übergeben. Wenn der Benutzer die App beendet, wird der Text aus der Tabelle entfernt. Ich möchte den vom Benutzer eingegebenen Text speichern. Wenn der Benutzer die App beendet und zurückkehrt, möchte ich, dass der Text gespeichert wird. Ich möchte es mit NSUserDefaults speichern.