歸檔概念:歸檔是把對象寫入文件保存在硬盤中,當再次從新打開程序時,能夠還原這些對象
歸檔後的文件時加密的,屬性列表是明文的
// 建立一個可變大小的數據流
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