存档数据,然后将其加载到viewdidload

问题描述 投票:0回答:1

我遵循了Objective-C教程,在完成此任务时,我必须制作一个通讯录样式的应用程序,该应用程序可在按下按钮后存储联系人详细信息,然后在下一次加载时将其恢复。

有问题弄清楚为什么未显示文本的原因,因此,下次我在模拟器中加载应用程序时,显然不会加载。

[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");

}

提前感谢

ios objective-c nsfilemanager
1个回答
0
投票
-(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; }
© www.soinside.com 2019 - 2024. All rights reserved.