Objective-C 对象进阶:归档的概念和用法
来源:互联网 发布:淘宝客软文编辑器 编辑:程序博客网 时间:2024/06/06 05:57
归档的概念和用法
概念:对象归档是指将对象写入文件保存在硬盘的文件内,当在次打开程序时,可以还原这些对象。
也可以称为对象序列化、对象持外化。
数据持久化的方式:
1> NSKeyedArchiver --- 对象归档
2> NSUserDefaults
NSUserDefaults 只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
NSUserDefaults 是个plist文件,建议只是简单快速地保存小型数据,正如其名 -用户的设置。
3> 属性列表化 (NSArray、NSDictionary保存文件)
4> SQLite 数据库、Core Data 数据库
归档的形式:
1> 对 Foundation 库中对象进行归档
2> 自定义对象进行归档 (需要实现归档协议、NSCoding)
归档后的文件是加密的、属性列表是明文的。
//
// main.m
// ArchiverDemo
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[])
{
@autoreleasepool {
/**
* 第一种方式
* 实现一个数组的序列化和反序列化
* 一个序列化对象只能序列化一个对象到指定的文件中。
*/
// 序列化 数组归档
NSArray *array = @[@"abc",@"123",@123456];
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"archiveDemo.archive"];
BOOL sucess = [NSKeyedArchiverarchiveRootObject:array toFile:path];
if (sucess)
{
NSLog(@"archive sucess");
}
// 反序列化 解归档
NSArray *array1 = [NSKeyedUnarchiverunarchiveObjectWithFile:path];
NSLog(@"%@", array1);
}
return 0;
}
//
// main.m
// ArchiverDemo
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[])
{
@autoreleasepool {
/**
* 第二种方式
* 一个基本数据类型和一个object-C对象类型,进行对象归档和解归档。
* 可以序列化多个对象
*/
// 序列化
NSString *homePath = NSHomeDirectory();// 获取当前路径
// 生成归档文件
NSString *filePath = [homePath stringByAppendingPathComponent:@"test.archive"];
// 创建 NSMutableData 对象
NSMutableData *data = [NSMutableDatadata];
// 创建归档对象
NSKeyedArchiver *archive = [[NSKeyedArchiveralloc] initForWritingWithMutableData:data];
// 归档数据
NSArray *array = @[@"jack",@"tom"];
[archiveencodeFloat:50forKey:@"weight"];
[archiveencodeObject:@"jack"forKey:@"name"];
[archiveencodeObject:array forKey:@"array"];
[archivefinishEncoding];
// 生成文件
[datawriteToFile:filePath atomically:YES];
// 反序列化
NSData *content = [NSDatadataWithContentsOfFile:filePath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiveralloc] initForReadingWithData:content];
float weight = [unarchiver decodeFloatForKey:@"weight"];
NSString *name = [unarchiver decodeObjectForKey:@"name"];
NSArray *array1 = [unarchiver decodeObjectForKey:@"array"];
NSLog(@"weith:%0.2f, name:%@, array1:%@", weight, name, array1);
}
return 0;
}
- Objective-C 对象进阶:归档的概念和用法
- Objective-C 对象进阶:归档的概念和用法
- Objective-C 对象进阶:归档的概念和用法
- Objective-C 对象进阶:自定义对象的归档
- Objective-C 对象进阶:Objective-C 中单例的概念和使用
- 【Objective-C】OC中对象归档(序列化)的基本概念和用法
- 归档的概念和用法
- Objective-c中对象的归档
- objective-C 自定义对象归档的实现
- objective C程序 NSString用法和类的概念
- 【Objective-C】OC中自定义对象的归档基本概念和使用方法(实现NSCoding协议)
- Objective-C 2.0 类对象的概念
- objective-C学习 自定义对象归档 archiver2
- 【Objective-C基础】自定义对象归档
- [精通Objective-C]归档和序列化
- iOS笔记之Objective - c 面向对象概念的解释
- ISO——对象归档的基本概念和用法
- objective-c 关键字和概念
- 用gdb和gdbserver调试android native code
- UVa 11468 substring AC自动机+记忆化搜索+全概率公式
- Visual Studio原生开发的调试技巧
- iOS话外篇——GitHub的简单使用教程
- DOM应用案例--列表框移动
- Objective-C 对象进阶:归档的概念和用法
- LBS应用开发读书有感(第一章 基于位置的服务)
- C++数据类型转换
- [转] 一个研究生毕业后的职业规划
- 浅析:智能指针
- 我的资源共享列表
- RPC框架/高性能远程同步调用框架/分布式服务框架
- android实现xml解析技术——Sax、Pull、Dom
- 剑指offer--数据结构之栈(2,18,24,39)