iOS之归档和解档

归档和解档


Serialization

什么是Serialization?

  • 写数据到本地磁盘或者进行传输时,需要进行序列化,转化成二进制流,从而便于传输和存储。同理,得到二进制流后,需要进行反序列化,还原成可以使用的数据。

  • 需要注意的是,不同的环境,serialize和unserialize是不同的。一般同一环境中的操作才能得到正确的数据。

为什么要Serialization?


  • 数据持久化
  • 数据共享
    • 程序之间(多进程)
    • 跨操作系统的数据共享
    • 通过网络进行数据传递
  • 数据存储到磁盘

归档


写入到文件时,可以采用下面的方法

1.writeFoFile

采用这种方法可以直接打开查看utf-8编码的haha.txt文件

    NSString *name = @"zhangsan";
    NSString *path = @"/Users/Long/wrk/haha.txt";
    [name writeToFile:path atomically:YES
             encoding:NSUTF8StringEncoding
                error:&error];

2.archiveRootObject

    NSString *name = @"zhangsan";
    NSString *path = @"/Users/Long/wrk/haha.txt";
    [NSKeyedArchiver archiveRootObject:name toFile:path];

打开haha.txt, 发现是如下所示的内容

bplist00‘������    
X$versionX$objectsY$archiverT$top��܆¢��U$nullXzhangsan_��NSKeyedArchiver—�TrootÄ����#-27:@I[^c��
e

3.archivedDataWithRootObject

NSString *name = @"zhangsan";
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:name];

解档

对NSData数据的解档

[NSKeyedUnarchiver unarchiveObjectWithData:data];

自定义的类归/解档

需要实现<NSCoding>代理方法

- (id) initWithCoder: (NSCoder *)coder
- (void) encodeWithCoder: (NSCoder *)coder
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容