Tuesday, 17 May 2016

Saving Data in NsuserDefaults and Retrieving

------------------------------------------------------------
//.h file
------------------------------------------------------------

#import <UIKit/UIKit.h>

@interface MasterViewController : UIViewController{
    IBOutlet UITextField *myTextField1;
     IBOutlet UITextField *myTextField2;
    
    NSMutableArray *nameArray;
    NSMutableArray *placeArray;
    
    NSUserDefaults *currentDefaults;
    
}

- (IBAction)savedata:(id)sender;
- (IBAction)listData:(id)sender;

@end

-------------------------------------------------------------
//.m file
-------------------------------------------------------------

#import "MasterViewController.h"
#import "listView.h"

@implementation MasterViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [myTextField1 becomeFirstResponder];
    currentDefaults = [NSUserDefaults standardUserDefaults];
}

- (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];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    // signup.enabled=YES;
    [myTextField1 resignFirstResponder];
    [myTextField2 resignFirstResponder];
    
    return YES;
}

- (IBAction)savedata:(id)sender{
    
    [nameArray addObject:myTextField1.text];
    [placeArray addObject:myTextField2.text];
    
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:nameArray] forKey:@"name"];
    [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:placeArray] forKey:@"place"];
    
}


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

}
@end

------------------------------------------------
Retrieving in Another View Controller(listView)
------------------------------------------------
//.h file
-----------------------------------------------

#import <UIKit/UIKit.h>

@interface listView : UIViewController<UITableViewDelegate>{

    IBOutlet UITableView *myTavleView;
    
    NSMutableArray *nameArray;
    NSMutableArray *placeArray;
    NSUserDefaults *currentDefaults;
}
@end

-----------------------------------------------
//.m file
-----------------------------------------------

#import "listView.h"

@implementation listView

- (void)viewDidLoad {
    [super viewDidLoad];
    
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    currentDefaults = [NSUserDefaults standardUserDefaults];
    
    NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"name"];
    NSMutableArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
    nameArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
    
    NSData *dataRepresentingSavedArray0 = [currentDefaults objectForKey:@"place"];
    NSMutableArray *oldSavedArray0 = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray0];
    placeArray = [[NSMutableArray alloc] initWithArray:oldSavedArray0];
   
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 75.0;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [nameArray count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    
    // Configure the cell.
    cell.textLabel.text= [nameArray objectAtIndex:indexPath.row];
    cell.detailTextLabel.text=[placeArray objectAtIndex:indexPath.row];
    
    
    return cell;
}
@end

------------------------------------------------------------------------------------




No comments:

Post a Comment