Wednesday, 18 May 2016

Editing And Updating Stored Data in NSUserdefaults


//second view controller

-(void)edit:(id)sender{
    
    UIButton *tappedButton = (UIButton*)sender;
    q=tappedButton.tag;
    NSString *index=[NSString stringWithFormat:@"%d",q];
    [currentDefaults setObject:index forKey:@"edit"];
    [self.navigationController popViewControllerAnimated:YES];
    
}


// main ViewController

- (void)viewWillAppear:(BOOL)animated {
    
    [super viewWillAppear:animated];
    
    NSData *dataRepresentingSavedArray0 = [currentDefaults objectForKey:@"name"];
    NSMutableArray *oldSavedArray0 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray0];
    nameArray = [[NSMutableArray alloc] initWithArray:oldSavedArray0];
    
    NSData *dataRepresentingSavedArray1 = [currentDefaults objectForKey:@"place"];
    NSMutableArray *oldSavedArray1 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray1];
    placeArray = [[NSMutableArray alloc] initWithArray:oldSavedArray1];
    
    //if Editing Needs to be done on Stored Data
    
    if([currentDefaults objectForKey:@"edit"]){
        NSString *index=[currentDefaults valueForKey:@"edit"];
        p=[index intValue];
        
        myTextField1.text=[nameArray objectAtIndex:p];
        myTextField2.text=[placeArray objectAtIndex:p];
        
    }

}


- (IBAction)savedata:(id)sender{

    
    if([currentDefaults objectForKey:@"edit"]){
       
        [nameArray replaceObjectAtIndex:p withObject:myTextField1.text];
        [placeArray replaceObjectAtIndex:p withObject:myTextField2.text];
    }else{
    
    [nameArray addObject:myTextField1.text];
    [placeArray addObject:myTextField2.text];
    }
    
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:nameArray] forKey:@"name"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:placeArray] forKey:@"place"];
    myTextField1.text=@"";
    myTextField2.text=@"";
}


- (IBAction)listData:(id)sender{
    listView *anotherViewController = [[listView alloc] initWithNibName:@"listView" bundle:nil];
    
    [self.navigationController pushViewController:anotherViewController animated:YES];
    [[NSUserDefaults standardUserDefaults]removeObjectForKey:@"edit"];
    myTextField1.text=@"";
    myTextField2.text=@"";

}

No comments:

Post a Comment