Wednesday 18 December 2013

Database Using Plist (add and Edit phone number)

DJ Delegate.h


DJ Delegate.m


DJ ViewController.h


@property (nonatomic, retain) IBOutlet UILabel *nameLbl;

@property (nonatomic, retain) IBOutlet UITextView *phoneTxtView;

- (IBAction)editButtonPressed:(id)sender;

DJViewController.m


#import "AddRec.h"

@synthesize nameLbl,
            phoneTxtView;

- (IBAction)editButtonPressed:(id)sender
{
    AddRec *addRecVC = [[AddRec alloc] init];
   
    [self presentViewController:addRecVC animated:YES completion:nil];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
   
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsPath = [paths objectAtIndex:0];
            NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];
           
            if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
            {
                        plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
            }
           
            NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
            NSString *errorDesc = nil;
            NSPropertyListFormat format;
           
    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML
                                                                          mutabilityOption:NSPropertyListMutableContainersAndLeaves
                                                                                    format:&format errorDescription:&errorDesc];
   
            if (!temp)
            {
                        NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
            }
           
    NSString *personName = [temp objectForKey:@"Name"];
            NSMutableArray *phoneNumbers = [NSMutableArray arrayWithArray:[temp objectForKey:@"Phones"]];
           
   
    nameLbl.text = personName;
    phoneTxtView.text = nil;
    for (int i = 0 ; i < phoneNumbers.count ; i++)
    {
        phoneTxtView.text = [NSString stringWithFormat:@"%@\n%@", phoneTxtView.text, [phoneNumbers objectAtIndex:i]];
    }
}

AddRec.h


{
    NSString                 *personName;
            NSMutableArray        *phoneNumbers;
           
}
@property (nonatomic, retain) IBOutlet UITextField  *nameEntered,
                                                    *homePhone,
                                                    *workPhone,
                                                    *cellPhone;

@property (nonatomic, retain) IBOutlet UIToolbar *toolBar;

//@property (nonatomic, retain) NSString *personName;
//@property (nonatomic, retain) NSMutableArray *phoneNumbers;

- (IBAction) saveData;

- (IBAction) textFieldReturn:(id)textField;

AddRec.m

 

@synthesize nameEntered,
            homePhone,
            workPhone,
            cellPhone,
            toolBar;

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    nameEntered.inputAccessoryView = toolBar;
    homePhone.inputAccessoryView = toolBar;
    workPhone.inputAccessoryView = toolBar;
    cellPhone.inputAccessoryView = toolBar;
       
   
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsPath = [paths objectAtIndex:0];
            NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];
           
            if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
            {
                        plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
            }
           
            NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
            NSString *errorDesc = nil;
            NSPropertyListFormat format;
           
    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
   
            if (!temp)
            {
                        NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
            }
           
    personName = [temp objectForKey:@"Name"];
            phoneNumbers = [NSMutableArray arrayWithArray:[temp objectForKey:@"Phones"]];
           
    nameEntered.text = personName;
            homePhone.text = [phoneNumbers objectAtIndex:0];
            workPhone.text = [phoneNumbers objectAtIndex:1];
            cellPhone.text = [phoneNumbers objectAtIndex:2];
}

- (IBAction) saveData
{
            NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsPath = [paths objectAtIndex:0];
            NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];
           
            personName = nameEntered.text;
            phoneNumbers = [[NSMutableArray alloc] initWithCapacity:3];
            [phoneNumbers addObject:homePhone.text];
            [phoneNumbers addObject:workPhone.text];
            [phoneNumbers addObject:cellPhone.text];
           
           
            NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects: personName, phoneNumbers, nil]
                                                          forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]];
           
            NSString *error = nil;
            NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
                                                                   format:NSPropertyListXMLFormat_v1_0
                                                         errorDescription:&error];
           
    if(plistData)
            {
        [plistData writeToFile:plistPath atomically:YES];
    }
    else
            {
        NSLog(@"Error in saveData: %@", error);
    }
   
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (IBAction) textFieldReturn:(id)sender
{
            [nameEntered resignFirstResponder];
    [homePhone resignFirstResponder];
    [cellPhone resignFirstResponder];
    [workPhone resignFirstResponder];
}

No comments:

Post a Comment

Comment