利用NSKeyedArchiver归档对象

来源:互联网 发布:软件导刊录用率高吗 编辑:程序博客网 时间:2024/06/05 02:51

单个对象归档:

        NSArray *array = @[@"111", @"aaa", @333, @"asdf3111"];        NSString *homePath = NSHomeDirectory();        NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"];        BOOL result = [NSKeyedArchiver archiveRootObject:array toFile:filePath];        if (result) {            NSLog(@"archiver success");        }                //解归档        NSString *homePath = NSHomeDirectory();        NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"];                NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];        NSLog(@"%@", array);


多个对象归档:

//NSMutableData NSKeyedArchiver配合 归档多个对象        NSString *homePath = NSHomeDirectory();        NSString *filePath = [homePath stringByAppendingPathComponent:@"multiple.data"];                NSMutableData *mutableData = [NSMutableData data];                //使用mutableData创建归档对象        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mutableData];                NSArray *array = @[@"ary1", @"ary2"];                [archiver encodeInt:20 forKey:@"intKey"];        [archiver encodeObject:array forKey:@"arrayKey"];        [archiver encodeObject:@"NSString value" forKey:@"stringkey"];        [archiver finishEncoding];        [archiver release];                BOOL result = [mutableData writeToFile:filePath atomically:YES];        if (result) {            NSLog(@"写入成功");        }                        //NSData 配合NSKeyedUnarchiver解归档多个对象        NSString *homePath = NSHomeDirectory();        NSString *filePath = [homePath stringByAppendingPathComponent:@"multiple.data"];                NSData *data = [NSData dataWithContentsOfFile:filePath];        NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];                int intVal = [unarchiver decodeIntForKey:@"intKey"];        NSArray *aryVal = [unarchiver decodeObjectForKey:@"arrayKey"];        NSString *strVal = [unarchiver decodeObjectForKey:@"stringkey"];                NSLog(@"intVal %d", intVal);        NSLog(@"aryVal %@", aryVal);        NSLog(@"strVal %@", strVal);                [unarchiver release];



原创粉丝点击