Domanda

Im following an Objective-C tutorial and on this task I have to make an address book style app that stores contact details after pressing a button and then on the next load restores them.

Having problems figuring out why text doesn't appear to be being saved - so will obviously not load next time I load the app in the simulator.

[super viewDidLoad];

    NSFileManager *filemgr;
    NSString *documentsDirectory;
    NSArray *directoryPaths;

    filemgr =[NSFileManager defaultManager];
    directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

    documentsDirectory =[directoryPaths objectAtIndex:0];

    filePath =[[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"userInfo.dat"]];

    if ([filemgr fileExistsAtPath:filePath])
    {
        NSMutableArray *userData;
        userData =[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

        txtFirstName.text =[userData objectAtIndex:0];
        txtLastName.text =[userData objectAtIndex:1];
        txtEmail.text =[userData objectAtIndex:2];
        txtPhone.text =[userData objectAtIndex:3];
        NSLog(@"File Has Been loaded");
    }else
    {
        NSLog(@"Error.");
    }


}

- (IBAction)btnSaveDetails:(id)sender {
    NSMutableArray *contactDetails;
    contactDetails =[[NSMutableArray alloc]init];
    [contactDetails addObject:txtFirstName.text];
    [contactDetails addObject:txtLastName.text];
    [contactDetails addObject:txtEmail.text];
    [contactDetails addObject:txtPhone.text];

    [NSKeyedArchiver archiveRootObject:contactDetails toFile:filePath];

    NSLog(@"File Saved");

}

Thanks in advance

È stato utile?

Soluzione

Have you tried this?

-(id)viewDidLoad
{
        NSMutableArray * userData = [[NSMutableArray alloc] init];

        NSData * downloadedData = [[NSData alloc] initWithContentsOfFile: [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/userInfo.plist"]];

        if (downloadedData.length)
            [userData setArray:[NSKeyedUnarchiver unarchiveObjectWithData:downloadedData]];

        NSLog(@"userData :%@", userData);

        downloadedData = nil;
}

-(IBAction)btnSaveDetails:(id)sender
{    

   NSMutableArray * contactDetails =[[NSMutableArray alloc]init];

    [contactDetails addObject:txtFirstName.text];

    [contactDetails addObject:txtLastName.text];

    [contactDetails addObject:txtEmail.text];

    [contactDetails addObject:txtPhone.text];

    NSData * contactData = [NSKeyedArchiver archivedDataWithRootObject:contactDetails];

    [contactData writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/userInfo.plist"] atomically:YES];

    contactData = nil;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top