[非凡程序员]归档解档和APPKit

归档概念:归档是把对象写入文件保存在硬盘中,当再次重新打开程序时,可以还原这些对象
归档后的文件时加密的,属性列表是明文的
// 创建一个可变大小的数据流
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"];
       //实例化一个解档对象 注意:初始化为解档格式并要放入要解档的数据流
       NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:fileData1];
       //输入要解档的key
       NSArray *arrayUnarchiver = [unArchiver decodeObjectForKey:
"number"];
       NSLog("arrayUnArchiver:%,%@",arrayUnarchiver0,arrayUnarchiver1);

APPKit :

//
// ViewController.h
// APPKit
//
// Created by 非凡程序员 on 15/11/10.
// Copyright (c) 2015年 Querida. All rights reserved.
//

//

//  ViewController.m

//  APPKit

//

//  Created by 非凡程序员 on 15/11/10.

//  Copyright (c) 2015 Querida. All rights reserved.

//

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

@end

#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


你可能感兴趣的:([非凡程序员]归档解档和APPKit)