ArchiverDemo(两种归档的方法)

2024-08-21 06:58

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

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[])

{


    @autoreleasepool {

/*****************************第一种归档方法*******************************/

        

        

        // 这种归档的缺点是 归档一个对象就对应一个文件 多个对象就会又多个文件

//        

//        //将一个数组归档

//        NSArray *array = @[@"abc",@"123",@456];

//        //根路径

//        NSString *homePath = NSHomeDirectory();

//        //创建一个新的路径 文件名的后缀可以随便 只是文件名的一部分

//        NSString *filePath = [homePath stringByAppendingPathComponent:@"/arc.archive"];

//        //判断归档是不是成功

//        BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:filePath];

//        

//        if (success)

//        {

//            NSLog(@"archive success");

//        }

//        

//        

//        

//        //解归档

//        NSString *homePath = NSHomeDirectory();

//        NSString *filePath = [homePath stringByAppendingPathComponent:@"/arc.archive"];

//        NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

//        NSLog(@"%@",array);\


        

/*****************************第二种归档方法*******************************/

//        //自定义内容的归档

//        //创建一个可变data 给归档对象

//        NSMutableData *data = [NSMutableData data];

//        NSString *homePath = NSHomeDirectory();

//        NSString *filePath = [homePath stringByAppendingPathComponent:@"archiver2.arc"];

//        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

//        //将不同的数据类型归档

//        [archiver encodeObject:@[@"123",@"asd",@34] forKey:@"array"];

//        [archiver encodeFloat:23.7 forKey:@"float"];

//        //调用下边的方法 将数据传到data里边

//        [archiver finishEncoding];

//        [archiver release];

//        //将文件写入路径 并判断是否成功

//        BOOL success = [data writeToFile:filePath atomically:YES];

//        if (success)

//        {

//            NSLog(@"archive success");

//        }

        //解归档

        NSString *homePath = NSHomeDirectory();

        NSString *filePath = [homePath stringByAppendingPathComponent:@"archiver2.arc"];

        NSData *data = [NSData dataWithContentsOfFile:filePath];

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

        NSArray *array = [unArchiver decodeObjectForKey:@"array"];

        float f = [unArchiver decodeFloatForKey:@"float"];

        [unArchiver release];

        NSLog(@"array = %@ f = %f",array,f);

        

        

    }

    return 0;

}

这篇关于ArchiverDemo(两种归档的方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

c++中std::placeholders的使用方法

《c++中std::placeholders的使用方法》std::placeholders是C++标准库中的一个工具,用于在函数对象绑定时创建占位符,本文就来详细的介绍一下,具有一定的参考价值,感兴... 目录1. 基本概念2. 使用场景3. 示例示例 1:部分参数绑定示例 2:参数重排序4. 注意事项5.

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx