浅谈iOS开发中的对象归档

? ? ? ??iOS提供的数据持久化方式有:SQLiteCoreData属性列表、NSUserDefault对象归档。

? ? ? ? 这里来简单介绍下iOS开发中的对象归档:

? ? ? ? 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化)使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化)

? ? ? ? 对象归档的文件是保密的磁盘上无法查看文件中的内容,而属性列表是明文的可以查看)

? ? ? ? 对象归档有两种方式:1、对foundat中对象进行归档 ? ? 2、自定义对象归档

?

? ? ? ? 1、简单对象归档

?

? ? ? ?使用两个类:NSKeyedA?richivNSKeyedUnarchiver

?

? ? ? ?NSStr*homeDirectori=NSHomeDirectori;??//获取根目录

?

? ? ? ?NSStringhomePath=[homeDirectoristringByA?ppendingPathComponent:@"自定义文件名,如test.archiver"];

?

? ? ? ?NSA?rrai*arrai=@[@"abc",@"123",@12];

?

? ? ? ?Boolflag=[NSKeyedA?richivarchiveRootObject:arraitoFile:homePath];

?

? ? ? ifflag{

?

? ? ? NSLog@"归档成功!";

?

? ? ? }

?

? ? ? 读取归档文件的内容:

?

? ? ? NSA?rrai*arrai=[NSKeyedUnarchivunarchiveObjectWithFile:homePath];

?

? ? ? NSLog@"%@",arrai;

?

? ? ? ? 这样就简单了实现了将NSA?rrai对象的归档和解档。

?

? ? ? ?但是这种归档方式有个缺点,就是一个文件只能保存一个对象,如果有多个对象要保存的话那岂不是有n多个文件,这样不是很适合的所以有了下面这种归档方式。

?

? ? ? ? 2、自定义内容归档

? ? ? ?归档:

? ? ? ?使用NSData实例作为归档的存储数据

? ? ? ?添加归档的内容---使用键值对

? ? ? ?完成归档

? ? ? ?解归档:

? ? ? ?从磁盘读取文件,生成NSData实例

? ? ? ?根据NSData实例和初始化解归档实例

? ? ? ?解归档,根据kei访问value

?

? ? ? ?NSStr*homeDirectori=NSHomeDirectori;//获取根目录

?

? ? ? ?NSStringhomePath=[homeDirectoristringByA?ppendingPathComponent:@"自定义文件名,如test.archiver"];

?

? ? ? ?NSMutableData*data=[[NSMutableDataalloc]init];

?

? ? ? ?NSKeyedA?rchiv*archiv=[[NSKeyedA?rchivalloc]initForWritingWithMutableData:data];

?

? ? ? ?[archivencodeFloat:50forKey:@"age"];

?

? ? ? ?[archivencodeObject:@"jack"forKey:@"name"];

?

? ? ? ?[archivfinishEncoding];?//结束添加对象到data中

?

? ? ? ?[archivrelease];

?

? ? ? ?[datawriteToFile:homePath?atomically:YES];//将data写到文件中保存在磁盘上

?

? ? ? ?NData*content=[NSDatadataWithConenteOfFile:homePath];

?

? ? ? ?NSKeyedUnarchiv*unarchiv=[[NSKeyedUnarchivalloc]initForReadingWithData:content];

?

? ? ? ?floatag=[unarchivdecodeFloatForKey:@"age"];

?

? ? ? ?NSStr*name=[unarchivdecodeObjectForKey:@"name"];

?

? ? ? ? 在iOS开发中,除了归档问题,往往不注意的是安全问题。别以为,就Android会爆漏洞,早在WireLurker出现的时候,iOS的安全神话就已经不复存在了。而目前在国内,iOS安全加密保护这块还是空白。但是,广大iOS开发者也不必担心,因为就在前不久,已经有平台推出了iOS应用加密服务,针对iOS的技术原理和破解原理,分别从本地数据、方法体/方法名、URL编码、程序结构、网络传输数据等几个方面对iOS应用进行全方位的保护,并可以根据iOS应用用户的需求提供定制解决方案,从而实现iOS防破解保护。iOS应用加密http://www.ijiami.cn/ios

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。