iOS 数据的归档(NSKeyedArchiver )与数据的解档(NSKeyedUnarchiver) 加密 提高安全性

 1 #import <UIKit/UIKit.h>
 2
 3 @interface ViewController : UIViewController
 4 /**
 5  *  创建归档与解档的按钮
 6  */
 7 @property(strong,nonatomic) UIButton *btnAchiver;
 8 @property(strong,nonatomic) UIButton *btnUnAchiver;
 9
10
11 #import "ViewController.h"
12 //宏定义 根目录
13 #define PATH [NSHomeDirectory() stringByAppendingPathComponent:@"test.add"]
14 @interface ViewController ()
15
16 @end
17
18 @implementation ViewController
19
20 - (void)viewDidLoad
21 {
22     [super viewDidLoad];
23     NSLog(@"%@",PATH);
24     //创建归档的按钮
25     self.btnAchiver=[[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
26     //为按钮添加背景色
27     self.btnAchiver.backgroundColor=[UIColor redColor];
28     //为按钮添加标题
29     [self.btnAchiver setTitle:@"数据归档" forState:UIControlStateNormal];
30     //按钮触发事件
31     [self.btnAchiver addTarget:self action:@selector(DataArchiver) forControlEvents:UIControlEventTouchUpInside];
32     //将按钮添加到父视图上
33     [self.view addSubview:self.btnAchiver];
34
35     //创建解档的按钮
36     self.btnUnAchiver=[[UIButton alloc] initWithFrame:CGRectMake(100, 200, 200, 50)];
37     //为按钮添加背景色
38     self.btnUnAchiver.backgroundColor=[UIColor redColor];
39     //为按钮添加标题
40     [self.btnUnAchiver setTitle:@"数据解档" forState:UIControlStateNormal];
41     //按钮触发事件
42     [self.btnUnAchiver addTarget:self action:@selector(DataUnArchiver) forControlEvents:UIControlEventTouchUpInside];
43     //将按钮添加到父视图上
44     [self.view addSubview:self.btnUnAchiver];
45
46 }
47 //事件 归档
48 -(void)DataArchiver
49 {
50     //创建归档的集合
51     NSArray *[email protected][@"yj",@"lm",@"tt"];
52     //创建归档的字符串
53     NSString *str=@"guiyangxueyuan";
54     //集合和字符串是要归档
55     BOOL bol=YES;
56     //初始化可变数据
57     NSMutableData *data=[NSMutableData data];
58     //初始化归档
59    NSKeyedArchiver *Archiver= [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
60     //把集合归档
61     [Archiver encodeObject:arr forKey:@"arr"];
62     //把字符串归档
63     [Archiver encodeObject:str forKey:@"str"];
64     //是要归档
65     [Archiver encodeBool:bol forKey:@"bol"];
66     //完成归档
67     [Archiver finishEncoding];
68     //把数据归档到PATH目录
69     BOOL bol2= [data writeToFile:PATH atomically:YES];
70     NSLog(@"%d",bol2);
71
72 }
73 //事件 解档
74 -(void)DataUnArchiver
75 {
76     //把解档数据存在PATH目录下
77     NSData *data=[NSData dataWithContentsOfFile:PATH];
78     //把解档的放在数据里
79     NSKeyedUnarchiver *Unarchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data];
80     //创建一个新的集合存解档集合的数据
81     NSArray *newarr=[Unarchiver decodeObjectForKey:@"arr"];
82     //创建一个新的字符串存解档字符串的数据
83    NSString *newstr=[Unarchiver decodeObjectForKey:@"str"];
84     NSLog(@"%@,%@",newarr,newstr);
85
86 }
时间: 2024-10-12 21:42:44

iOS 数据的归档(NSKeyedArchiver )与数据的解档(NSKeyedUnarchiver) 加密 提高安全性的相关文章

[Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档

本文将演示使用开源类库实现创建普通PDF文档和加密PDF文档. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'PDFGenerator' 7 end 根据配置文件中的相关配置,安装第三方库. 在项目导航区,打开视

Snail—OC学习之本地数据持久化(归档)

#import <Foundation/Foundation.h> #import "Dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSString * filePath = @"/Users/student/Desktop/snail/array.data"; //对官方类创建的对象进行存储 NSArray * array = @[@"one"

iOS:文件归档和解归档的详解和使用

文件归档和解归档: 用途: 所谓文件归档,就是把需要存储的对象数据存储到沙盒的Documents目录下的文件中,即存储到了磁盘上,实现数据的持久性存储和备份.解归档,就是从磁盘上读取该文件下的数据,用来完成用户的需求.对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径的读取文件的内容(也称为接档,反序列化),(对象归档的文件是保密的,在磁盘上无法查看文件中的内容,而属性列表是明文的,可以查看). 区别: 通过文件归档产生的文件是不可见的,如果打开

IOS数据持久化之归档NSKeyedArchiver, NSUserDefaults,writeToFile

//2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够进行文件读写 //string文件读写 NSString *string = @"假如给我有索纳塔"; //Document NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUs

IOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档

IOS中利用NSKeyedArchiver进行数据的归档和恢复

1.相关知识点: <1> 可以利用NSKeyedArchiver 进行归档和恢复的对象类型:NSString .NSDictionary.NSArray.NSData.                        NSNumber等 <2> 使用是必须遵循NSCoding协议对象,实现两个方法: encodeWithCoder:归档对象时,将会调用该方法. initWithCoder:每次从文件中恢复对象时,调用该方法. 2.简单例子阐述详细步骤 <1> 创建一个学生

IOS数据存储之归档(NSKeyedArchiver)/解档(NSKeyedUnarchiver)

前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档和解档.我们先来回顾一下JAVA是怎么实现保存一个自定义对象的!首先一个自定义对象必须实现Serializable接口,然后把一个对象序列化成二进制数据写入一个byte[]数据或者文件,反之则是从一个二进制数据或者文件中读取二进制数据反序列化成对象,所以我认为ios的归档解档其实就是类似JAVA序列化反序列化的过程,下面写个程序来尝试一下. 先测试下基础类型: //归

iOS数据持久化存储之归档NSKeyedArchiver

归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式),收集了网上的一些资料并结合自己的一些经验,总结如下. 一.使用archiveRootObject进行简单的归档 使用NSKeyedArichiver进行归档.NSKeyedUnarchiver进行接档,这种方式会在写入.读出数据之前对数据进行序列化.反序列化操作. 归档:  //1.获取文件路径 NSString *docPath=[NSSearchPathForDirectoriesInDomai

IOS 数据存储(NSKeyedArchiver 归档篇)

什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字典.NSNuber.BOOL等容器类对象,不能将自定义对象进行保存,而通过归档能将所有的对象转化为二进制数据存储到文件中. 归档的缺点 归档保存数据,只能一次性归档保存以及一次性解压.所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据.