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];

自定义的类归/解档

需要实现代理方法

- (id) initWithCoder: (NSCoder *)coder
- (void) encodeWithCoder: (NSCoder *)coder

你可能感兴趣的:(iOS之归档和解档)