归档概念:归档是把对象写入文件保存在硬盘中,当再次从新打开程序时,能够还原这些对象
归档后的文件时加密的,属性列表是明文的
// 建立一个可变大小的数据流
NSMutableData *mutableData =[[NSMutableData alloc]init];
// 把用归档格式的数据传值给可变大小的数据流
NSKeyedArchiver *archiver =[[NSKeyedArchiver alloc]initForWritingWithMutableData:mutableData];
// 把集合数据以归档形式编码
[archiver encodeObject:[
"5","3" ] forKey:
"number"];
// 完成归档
[archiver finishEncoding];
// 把归档过来的可变大小的数据流 写入文件中 永久储存
[mutableData writeToFile:@"/Users/feifanchengxuyuan/Desktop/NSFileManager/test.txt" atomically:YES];程序员
解档概念:解档就是从文件中读取出想过归档形式的编码后,还原对象类型的操做。
还原数据:从硬盘中读取文件,生成NSData实例,根据Data实例进行建立和初始化还原归档文件实例
还原文件,根据key去访问相应的value值编码
//建立一个NSFileManager类型的对象
NSFileManager *fileManager1 = [NSFileManager defaultManager];
//用NSData文件接收从PATH路径读取出来的文件内容
NSData *fileData1 =[fileManager1 contentsAtPath:"/Users/feifanchengxuyuan/Desktop/NSFileManager/test.txt"];
"number"];
//实例化一个解档对象 注意:初始化为解档格式并要放入要解档的数据流
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:fileData1];
//输入要解档的key
NSArray *arrayUnarchiver = [unArchiver decodeObjectForKey:
NSLog("arrayUnArchiver:%
,%@",arrayUnarchiver0,arrayUnarchiver1);"/Users/feifanchengxuyuan/Desktop/NSFileManager/test.txt"];
//实例化一个解档对象 注意:初始化为解档格式并要放入要解档的数据流
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:fileData1];
//输入要解档的key
NSArray *arrayUnarchiver = [unArchiver decodeObjectForKey:"arrayUnArchiver:%
APPKit :atom
//
// ViewController.h
// APPKit
//
// Created by 非凡程序员 on 15/11/10.
// Copyright (c) 2015年 Querida. All rights reserved.
//加密
//spa
// ViewController.m.net
// APPKitcode
//orm
// Created by 非凡程序员 on 15/11/10.对象
// Copyright (c) 2015年 Querida. All rights reserved.get
//
#import <Cocoa/Cocoa.h>
@interface ViewController : NSViewController
@property (weak) IBOutlet NSTextField *inputLable;
@property (weak) IBOutlet NSTextField *resluteLable;
- (IBAction)changeUpp:(id)sender;
- (IBAction)changeLower:(id)sender;
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// [_inputLable setStringValue:@"www"];
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
// Update the view, if already loaded.
}
- (IBAction)changeUpp:(id)sender {
NSString *str=[_inputLable stringValue];
NSString *changeUpp=[str uppercaseString];
[_resluteLable setStringValue:changeUpp];
}
- (IBAction)changeLower:(id)sender {
NSString *str1=[_inputLable stringValue];
NSString *changeLower=[str1 lowercaseString];
[_resluteLable setStringValue:changeLower];
}@end