归档(转)

如果是自定义类型的归档和解档,是按以下步骤实现

如果不是自定义类型,直接第四步就可以。

一、创建一个类User
二、在User.h中遵循NSCoding协议

#import <Foundation/Foundation.h>

@interface User : NSObject<NSCoding>

{

int _userAge;//例子

NSString *_userName;//

}

@property(nonatomic,assign)int userAge;

@property(nonatomic,copy)NSString *userName;

@end

三、在User.m中实现协议中的归档,解档方法

@implementation User

@synthesize userName = _userName;

@synthesize userAge = _userAge;

// 实现归档操作

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:_userName forKey:@"username"];

[aCoder encodeInt:_userAge forKey:@"userage"];

}

// 实现解档操作

- (id)initWithCoder:(NSCoder *)aDecoder

{

_userAge = [aDecoder decodeIntForKey:@"userage"];

_userName = [aDecoder decodeObjectForKey:@"username"];

return self;

}

@end

四、在AppDelegate.m中包含user.h

#import "AppDelegate.h"

#import "User.h"

@implementation AppDelegate

@synthesize window=_window;

- (void)dealloc

{

[_window release];

[super dealloc];

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];

// Override point for customization after application launch.

// 归档(序列化和反序列化) - 存储自定义对象

User *user = [[User alloc] init];

user.userAge = 30;

user.userName = @"张三";

// 归档操作(将归档数据写入NSMutableData中,然后将NSMutableData对象写成文件)

NSMutableData *data = [[NSMutableData alloc] init];

NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

// 写入数据

[archiver encodeObject:@"test" forKey:@"username"];

[archiver encodeObject:@"123456" forKey:@"userpassword"];

[archiver encodeInt:111 forKey:@"number"];

[archiver encodeObject:user forKey:@"user"];

// 写入完毕

[archiver finishEncoding];

[archiver release];

// 将data写成文件

[data writeToFile:[NSStringstringWithFormat:@"%@/Library/Caches/user.archiver",NSHomeDirectory()] atomically:NO];

[data release];

// 解档(先把文件读取成NSMutableData然后从data中解出数据)

NSMutableData *contentData = [[NSMutableData alloc] initWithContentsOfFile:[NSStringstringWithFormat:@"%@/Library/Caches/user.archiver",NSHomeDirectory()]];

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:contentData];

int number = [unarchiver decodeIntForKey:@"number"];

NSString *username = [unarchiver decodeObjectForKey:@"username"];

NSString *userpassword = [unarchiver decodeObjectForKey:@"userpassword"];

User *contentUser = [unarchiver decodeObjectForKey:@"user"];

NSLog(@"user.userAge = %d",contentUser.userAge);

NSLog(@"user.userName = %@",contentUser.userName);

NSLog(@"number = %d",number);

NSLog(@"username = %@",username);

NSLog(@"userpassword = %@",userpassword);

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

时间: 2024-11-09 23:40:01

归档(转)的相关文章

linux下的压缩、归档

压缩  bz2.xz.zip.Z 不能压缩目录,压缩后默认删除原文件. gz: gzip /path/filename -d 解压缩 gunzip /paht/some_filename zcat /path/somefile.gz:在不解压的条件下,查看文本文件的内容. bzip2:比gzip有更大压缩比. bzip2 /path/some_filename -d 解压缩 -k 保留原文件 bunzip2 /path/some_filename bzcat /path/somefile.bz2

RAC 环境下修改归档模式

RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异.在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题.本文主要描述了由非归档模式切换到归档模式,而由非归档切换的归档步骤相同,不再赘述. [sql] view plain copy print? 1.主要步骤: 备份spfile,以防止参数修改失败导致数据库无法启动 修改集群参数cluster_database为false 启动单实例到mount状态

IOS学习之NSKeyedArchiver、NSKeyedUnarchiver归档

IOS保存文件的其中一种形式是NSKeyedArchiver.NSKeyedUnarchiver归档: 以下内容以一个to-do lists软件为例,ChecklistItem为一个项目(数据模型),包含一个字符串text和一个BOOL标记checked,items是视图控制器的NSMutableArray,包含多个ChecklistItem,保存数据时以items为整体保存到.plist文件,读取则一样. 1.首先在数据模型的.h文件中实现协议<NSCoding>,例如: @interfac

oracle11g dataguard failover重建后归档日志没有被应用被NO的问题

1,主库从库归档记录不一致,如下所示: 做完failover后,坏的旧主库变成了新的从库,但是新从库的归档日志记录不一致,就是archive log list;出来的和v$archived_log出来对不上号,如下所示: 1.1 主库: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Olde

iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)

AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** 沙盒中文件夹: 1.Documents : 存储长久保存的数据 2.library: Caches:存放的缓存,比如:视频,音频,图片,小说等等 Perferences:存储偏好设置,比如:应用程序是否是第一次启动 保存用户名和密码. 3.t

Linux压缩归档工具

压缩工具: 1> zip,unzip 格式:  #zip 压缩文件名 原文件名 1.递归的压缩一个目录及目录下的文件: #zip -r var-log-dir  /var/log 2.压缩目录下的多个文件: #zip var-log-files  /var/log/*此方法不会递归压缩子目录下的文件. 3.查看解压缩过程中的详细信息: #unzip -v  压缩文件 4.在不解压的情况下查看压缩文件里的文件列表: #unzip -l 压缩文件 5.检查压缩文件的完整性: #unzip -t 压缩

IOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra

谢烟客---------Linux之压缩解压缩及归档工具的使用

压缩工具 compress/uncompress:  .Z结尾 gzip/gunzip: .gz结尾 bzip2/bunzip2: .bz2结尾 xz/unxz: .xz后缀 压缩及归档工具: zip/unzip 归档工具: tar,cpio(特殊场景) gzip/gunzip/zcat命令 1.LZ77压缩算法 2.压缩比不高:快速.高效 3.压缩/解压缩后删除原文件,为了节约空间 4.纯文本压缩,二进制压缩意义不大 5.压缩目录,-r gzip [OPTIONS...] FILE     -

运维学习之Linux系统中的文件传输、归档、压缩

不同系统之间的文件传输 1.文件归档 1. 文件归档,就是把多个文件变成一个归档文件 2. tar c ##创建 f ##指定归档文件名称 t ##显示归档文件中的内容 r ##向归档文件中添加文件 --get ##取出单个文件 --delete ##删除单个文件 x ##取出归档文件中的所有内容 -C ##指定解档目录 -z ##gz格式压缩 -j ##bz2格式压缩 -J ##xz格式压缩 2.压缩 gz gzip etc.tar ##压缩成gz格式 gunzip  etc.tar.gz #

表归档脚本脚本

这两天用python谢了个表数据的归档脚本,记录一下. [[email protected] python_scripts]# crontab -l # 表数据归档 30 21 * * * cd /root/python3/ && source bin/activate && cd /opt/sh/python_scripts/ && python mysql_pigeonhole.py --------------------- [[email prote