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);
    
  • 相关阅读:
    平衡“把事情做完”和“一味追求时间延长”
    a little sad
    测试
    【转】无法打开登录所请求的数据库 "xxxx"。登录失败。 用户 'xxxxx' 登录失败。
    JavaScript.JQuery.Ajax学习笔记
    RouteDebug.dll
    自由社区网站的搭建(一)——前言
    连接数据库时注意连接方式
    SQL高版本向低版本附加数据库时出现的问题
    安装sql2017时提示Polybase 要求安装Oracle JRE 7更新51 (64位)或更高版本”规则失败
  • 原文地址:https://www.cnblogs.com/zanglitao/p/3998484.html
Copyright © 2011-2022 走看看