归档/解档

2024-02-07 19:58
文章标签 解档 归档

本文主要是介绍归档/解档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.  归档方法

归档
1->有一个遵守了 NSCoding 协议的复杂对象
2->初始化对象
3->NSMutabledata
4->使用 NSMutableData 初始化归档工具 (归档工具作用:  将 person 类进行编码到 mutabaleData 里面)
5->通过工具将对象编码写入到 NSData
6->结束编码
7->把NSMutabledata写入本地

代码:
在 person 类的. h 文件中声明 person 类的属性 name, phone

@property (nonatomic, strong) NSString *name;

@property (nonatomic, strong) NSString *phone;

在 person 类的. m 实现归档解档的方法

// 转码

- (void) encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeObject:self.name forKey:@"pName"];

    [aCoder encodeObject:self.phone forKey:@"pPhone"];

}


// 反转码

- (id)initWithCoder:(NSCoder *)aDecoder

{

    self = [super init];

    if (self) {

        

        // 把编号的数据, 反编码到本身的属性上

        self.name = [aDecoder decodeObjectForKey:@"pName"];

        self.phone = [aDecoder decodeObjectForKey:@"pPhone"];

    }

    return self;

}


在 viewController 中归档

// 第一步:有一个遵守 NSCoding 协议的复杂对象

    Person *person = [[Person alloc]init];

    person.name = @"张三";

    person.phone = @"123123123123123";

    

    // 需要遵循  NSCoding 协议 person 类里面遵守

    // 创建归档工具

    // person 类进行编码到 mutabaleData 里面

    NSMutableData *personData = [NSMutableData data];

    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:personData];

    // person 类编码到 personData 里面

    [archiver encodeObject:person forKey:@"person"];

    // 结束编码

    [archiver finishEncoding];

    NSLog(@"%@", personData);

    

    // 写到哪里 初始化一个路径

    NSString *path = [documentStr stringByAppendingPathComponent:@"/person.txt"];

    // 写入本地

    [personData writeToFile:path atomically:YES];




二. 解档方法
解档
1->从本地取出归档时的 nsdata 的文档
2->用拿到的 data 初始化解档工具
3->把编好的数据, 反编码到本身的属性上
4->通过初始化一个 person 类指针, 通过key值接收解档后的数据
5->结束反编码

代码

    NSData *data = [NSData dataWithContentsOfFile:path];

    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

    Person *person1 = [unarchiver decodeObjectForKey:@"person"];

    [unarchiver finishDecoding];

    NSLog(@"person1 ==== %@", person1.name);


归解档的简单写法

    Person *persons = [[Person alloc]init];

    persons.name = @"李四";

    persons.phone = @"23232323232";

    

    // 归档方法

    NSString *paths = [documentStr stringByAppendingPathComponent:@"/newPerson.txt"];

    [NSKeyedArchiver archiveRootObject:persons toFile:paths];

    

    // 解档方法

    Person *persons1 = [NSKeyedUnarchiver unarchiveObjectWithFile:paths];

    

    NSLog(@"person1 ==== %@", persons1.name);





这篇关于归档/解档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688757

相关文章

数据库归档策略

数据库迁移策略 为备战双11,需要将数据库中的相关表(历史订单)进行归档,以便腾出更多的空间迎接订单的暴增。作者经过尝试,得出自认为最优的解决方案。下面给出数据库归档策略及示例代码。 现有条件: 1.现有两个数据库:db-A 以及 db-B; 2.两个库中有字段相同的表:tba(表中只有字段订单id–rx_id(long型) 有索引); 3.归档库的tba中还有17年整年的归档数据。 4.由于单

MySQL数据归档策略:实现定期数据维护与优化

在数据库管理中,数据归档是一个重要的环节,它不仅有助于维护数据的完整性和安全性,还可以优化数据库的性能。对于MySQL数据库,实现数据的定期归档可以通过多种方法,包括使用事件调度器、编写脚本或利用第三方工具。本文将详细介绍如何在MySQL中设置和执行定期归档任务,以确保数据的有效管理和维护。 1. 数据归档的重要性 数据归档是将不再频繁访问的数据从主数据库转移到另一个存储系统的过程。在MySQ

泛微OA主流程节点设置子流程归档后主流程自动跳转下一个节点,子流程已归档主流程不自动跳转

⭐️如果对你有用的话,希望可以点点赞,感谢了⭐️ 主流程节点已设置触发的子流程归档后自动跳转下个节点 当子流程归档后主流程不自动跳转下个节点 是什么问题? 主流程节点中存在必填字段中有空值,需要检查主流程节点排查把空值的必填字段设置成只读或者编辑 再干预一次子流程归档,主流程即跳转下个节点

闪回数据归档实验(Flashback Data Archive)

闪回数据归档实验(Flashback Data Archive) 使用环境 --11g开始有此功能 --12c需要数据库没有插件库或版本为12.1.0.2及以后的版本 实验--创建表空间用来存放闪回数据归档SYS@PROD1> create tablespace fda datafile '/u01/app/oracle/oradata/PROD1/fda01.

归档解档的简单回顾——由于数据解析的原理与此类似(面试也会问到)

新建工程 Person.h //// Person.h// 归档和解档//// Created by apple on 15/10/26.// Copyright (c) 2015年 LiuXun. All rights reserved.//#import <UIKit/UIKit.h>/**归档和解档在开发中很少使用*/@interface Person : N

承包经营权成果清理规范及整合建库_电子档案归档

一、软件概述 1.1 运行环境   操作系统:Windows 7(64位) 或之后操作系统; 1.2 软件功能 电子档案归档 原始数据处理过程数据处理成果数据处理工作量统计 1.3 启动软件   双击“承包经营权成果清理规范及整合建库.exe”文件,启动软件。 1.4 扫描仪设置   文稿来源:自动进纸模式   扫描模式:双面   文档大小:自动侦测   图形类型:彩色   分辨

每日一记:Oracle Dataguard定时清理从库已归档日志

作为一个合格的DBA,每次部署完DG,都应该考虑到后果,想想如果从库的归档满了该怎么办? 如果可以每天登陆服务器检查,那也是可以的。往往很多时候都会因没有及时清理归档,导致数据库出错。 那么,你需要以下这个脚本来帮你解决这个问题: #!/bin/bashoracle_sid=$1applied_days=$2dest_id=$3export ORACLE_SID=${oracle_s

Oracle归档日志满了,导致程序打不开,如何解决。

加油,新时代打工人! 归档日志错误,登录不上,只能用system 角色登录, 错误提示 oracle 错误257 archiver error connect internal only until freed 解决cmd进入rman RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具

智能车资料归档:直流电机驱动板设计

4833N,MOS, 直流电机驱动板 描述: 设计来源:NXP智能车竞赛平衡车组 使用NMOS(4833N)搭建H桥使用IR2104 作为栅极驱动芯片

归档 object-c把数据写入到文件中

holydancer原创 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7371643 先介绍一个自定义类描述的方法description,一般情况下,一个自定义类我们在用%@输出的时候,给出的是一个内存地址,我们在该类的.m文件里重写description方法,来修改输出内容,呆会儿我