zoukankan      html  css  js  c++  java
  • IOS归档操作

    使用NSKeyedArchiver归档

          NSDictionary *writedic = @{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"};
            [NSKeyedArchiver archiveRootObject:writedic toFile:@"mydic.archive"];
            
            NSDictionary *readdic = [NSKeyedUnarchiver unarchiveObjectWithFile:@"mydic.archive"];
            NSLog(@"%@",readdic);
    

    使用NSCoding对自定义对象归档

    1类定义

    @interface Zltobject : NSObject<NSCoding> {
        NSString *_name;
        int _age;
        float _weight;
        
    }
    
    - (void)encodeWithCoder:(NSCoder *)aCoder {
        [aCoder encodeObject:_name forKey:@"name"];
        [aCoder encodeInt:_age forKey:@"age"];
        [aCoder encodeFloat:_weight forKey:@"weight"];
        
    }
    
    
    - (id)initWithCoder:(NSCoder *)aDecoder {
        _name = [aDecoder decodeObjectForKey:@"name"];
        _age = [aDecoder decodeIntForKey:@"age"];
        _weight = [aDecoder decodeFloatForKey:@"weight"];
        
        return self;
    }

    2归档

         Zltobject *obj = [[Zltobject alloc] initWithName:@"zlt" Age:18 Weight:120.5];
            [NSKeyedArchiver archiveRootObject:obj toFile:@"obj.archive"];
            Zltobject *obj2 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"obj.archive"];
            NSLog(@"%@",obj2);

    如果类中的成员变量有其他的自定义类,也需要实现NSCoding协议

     使用NSData归档多个对象

         NSDictionary *archive1 = @{@"key1":@"value1"};
            Zltobject *archive2 = [[Zltobject alloc] initWithName:@"zlt" Age:18 Weight:120.5];
            NSMutableData *writeData = [NSMutableData data];
            NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:writeData];
            [archiver encodeObject:archive1 forKey:@"archive1"];
            [archiver encodeObject:archive2 forKey:@"archive2"];
            //结束归档
            [archiver finishEncoding];
            //写入文件
            [writeData writeToFile:@"mutable.archive" atomically:YES];
            
            NSData *readData = [NSData dataWithContentsOfFile:@"mutable.archive"];
            NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:readData];
            NSDictionary *dic = [unarchiver decodeObjectForKey:@"archive1"];
            Zltobject *zltobj = [unarchiver decodeObjectForKey:@"archive2"];
            //结束恢复
            [unarchiver finishDecoding];
            NSLog(@"%@,%@",dic,zltobj);
    
  • 相关阅读:
    安装VC6.0遇到的问题
    开发、测试环境
    OPENGL绘制文字
    C++实现文件关联
    MFC多国语言——配置文件
    MFC 资源记录
    如何解决——汉化英文界面出现乱码
    项目配置——添加第三方资源
    队列&生产者消费者模型
    抢票小程序
  • 原文地址:https://www.cnblogs.com/zanglitao/p/3998484.html
Copyright © 2011-2022 走看看