iOS归档与解归档,持久化存储

iOS数据持久化存储技巧:归档、解归档与文件操作 在计算机科学中,序列化是指将数据结构或对象状态转换成可以存储或传输的格式的过程。在iOS开发中,这通常意味着将对象转换成可以在磁盘存储或网络传输的数据。相对应的,反序列化则是在需要的时候将这些数据恢复成原来的对象结构。序列化和反序列化在数据持久化、网络通信以及不同编程语言之间的数据交换等方面扮演着重要角色。它们允许开发者在不同的应用层之间共享信息,也可以让数据在不同状态之间持久化保存。Core Data 是iOS中强大的持久化框架,它提供了一套对象-关系映射(ORM)的解决方案。 阅读详情
点此下载iOS归档,持久化存储,解归档详细工程
//数据持久化的本质:将数据读取成文件保存在本地. 沙盒机制就是系统针对于每一个程序在本地生成的文件夹(名字随机生成), 对于不同的应用程序, 不能访问其他应用程序沙盒内的内容, 对于该应用程序内容起到保护作用:1 Documents:用来存储长久保存的数据 2 xxx.app:应用程序的包, 包含应用程序加载所需的所有资源(readonly只读, 不可修改), 平时使用的NSBundle就是该包 3 Library: 1) Caches:本地缓存, 存储想暂时保存的数据(Videos, Musics, Images) 比如:下载的视频, 音频, 图片都存储在该文件夹下 2) Preferences:存储用户的偏好设置, 比如程序是否是第一次启动 4 tmp:存储还未下载完的视频, 音频, 当下载完后, 将文件转移到Caches文件夹下

#import "WYLReadAndWriteViewController.h"
#import "WYLArchive.h"
@interface WYLReadAndWriteViewController ()<UITextFieldDelegate>

@end

@implementation WYLReadAndWriteViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    self.navigationItem.title = @"文件读写";
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(40, 84, 220, 40)];
    textField.tag = 100;
    textField.placeholder  = @"请输入内容";
    textField.delegate = self;
    textField.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:textField];
    [textField release];
    UITextField *textField2 = [[UITextField alloc]initWithFrame:CGRectMake(40, 174, 220, 40)];
    textField2.tag = 101;
    textField2.placeholder  = @"显示上一个输入框的内容";
    textField2.delegate = self;
    textField2.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:textField2];
    [textField2 release];
    UIButton *writeButton = [UIButton buttonWithType:UIButtonTypeSystem];
     writeButton.frame =  CGRectMake(45, 260, 60, 30);
    [writeButton setTitle:@"写入" forState:UIControlStateNormal];
    [writeButton addTarget:self action:@selector(write:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:writeButton];
    UIButton *readButton = [UIButton buttonWithType:UIButtonTypeSystem];
    readButton.frame = CGRectMake(190, 260, 60, 30);
    [readButton setTitle:@"读取" forState:UIControlStateNormal];
    [readButton addTarget:self action:@selector(read:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:readButton];
    UIButton *push = [UIButton buttonWithType:UIButtonTypeSystem];
    push.frame = CGRectMake(120, 310, 60, 30);
    [push setTitle:@"push" forState:UIControlStateNormal];
    [push addTarget:self action:@selector(push:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:push];
    
    
}

- (NSString *)getFilePath
{
    //用来获取指定文件夹的路径:<#NSSearchPathDirectory directory#>:指定的文件夹;<#NSSearchPathDomainMask domainMask#>:设置查找的域, 我们自己的文件都是存储在永华域的;<#BOOL expandTilde#>:是否使用详细路径(绝对路径) 因为最初该方法是使用与MAC OS下的, 而对于电脑系统来说, 可能会存储多个用户, 所以获取到得用户可能有多个, 所以返回值类型是数组, 但是对于iOS下, 就要只有一个用户, 所以数组中只有一个元素
    /*
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    //2)拼接上要存储文件的路径
    NSString *newFilePath = [documentsPath stringByAppendingPathComponent:@"aa.txt"];
    NSLog(@"%@", newFilePath);
     */
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *newPath = [filePath stringByAppendingPathComponent:@"test.txt"];
    NSLog(@"%@", newPath);
    return newPath;
}

- (void)read:(UIButton *)button
{
    //每次写入都会将之前的内容覆盖掉, 若想保留之前的数据, 需要讲之前的数据读出, 然后将要存储的数据拼接在一起, 一起存入
    /*
    NSString *newFilePath = [self getFilePath];
    NSError *error = nil;
    NSString *content = [NSString stringWithContentsOfFile:newFilePath encoding:NSUTF8StringEncoding error:&error];
    UITextField *tf = (UITextField *)[self.view viewWithTag:101];
    tf.text = content;
     */
    //字符串从本地读取
    /*
    NSString *filePath = [self getFilePath];
    NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    UITextField *tf = (UITextField *)[self.view viewWithTag:101];
    tf.text = content;
     */
    //数组从本地文件读取
    NSString *filePath = [self getFilePath];
//    NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
    //从字典从本地读取
    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
    UITextField *tf = (UITextField *)[self.view viewWithTag:100];
    UITextField *tf1 = (UITextField *)[self.view viewWithTag:101];
    tf.text = dic[@"tf2"];
    tf1.text = dic[@"tf1"];
    
}
//文件读写暂时只支持:NSString, NSArray, NSDictionary, NSData, 以及他们的子类.写入文件:writeToFile:(这是对象调用的方法), 读取文件:每一个类自带的能够根据路径创建对象的方法:[类名 类WithContentsOfFile]; 字符串:[NSString stringWithContentsOfFile], 数组:[NSArray arrayWithContentsOfFile], 字典:[NSDictionary dictionaryWithContentsOfFile], 二进制流:[NSData dataWithContentsOfFile],(牢牢谨记:对于数组, 字典这样的容器类, 内部的成员也必须是能够实现文件读写的八大类之一)
- (void)write:(UIButton *)button
{
    //写入时, 将第一个输入框中的文字, 写入到本地文件
    //1 获取存储的内容

    UITextField *tf = (UITextField *)[self.view viewWithTag:100];
    NSString *content = tf.text;
    //2 获取到所要存储的文件路径
    //1)获取Documents文件夹路径
    NSString *newFilePath = [self getFilePath];
    //3 将内容存储到指定文件路径
//    NSError *error = nil;
     //字符串写入本地文件
//    BOOL isSucceed = [content writeToFile:newFilePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
     //数组写入本地文件
    UITextField *tf2 = (UITextField *)[self.view viewWithTag:101];
    NSString *content1 = tf2.text;
//    NSArray *arr = @[content, content1];
//    BOOL isSucceed = [arr writeToFile:newFilePath atomically:YES];
    //字典写入本地文件
    NSDictionary *dic = @{@"tf1": content, @"tf2": content1};
    BOOL isSucceed = [dic writeToFile:newFilePath atomically:YES];
    NSLog(@"%d", isSucceed);
    
}
- (void)push:(UIButton *)button
{
    WYLArchive *archivieVC = [[WYLArchive alloc]init];
    [self.navigationController  pushViewController:archivieVC animated:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

#import "WYLArchive.h"
#import "Person.h"
@interface WYLArchive ()<UITextFieldDelegate>

@end

@implementation WYLArchive

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    self.navigationItem.title = @"归档与反归档";
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(40, 84, 220, 40)];
    textField.tag = 100;
    textField.placeholder  = @"请输入内容";
    textField.borderStyle = UITextBorderStyleRoundedRect;
    textField.delegate = self;
    [self.view addSubview:textField];
    [textField release];
    UITextField *textField2 = [[UITextField alloc]initWithFrame:CGRectMake(40, 174, 220, 40)];
    textField2.tag = 101;
    textField2.placeholder  = @"显示上一个输入框的内容";
    textField2.borderStyle = UITextBorderStyleRoundedRect;
    textField2.delegate = self;
    [self.view addSubview:textField2];
    [textField2 release];
    UIButton *fileButton = [UIButton buttonWithType:UIButtonTypeSystem];
    fileButton.frame =  CGRectMake(45, 260, 60, 30);
    [fileButton setTitle:@"归档" forState:UIControlStateNormal];
    [fileButton addTarget:self action:@selector(file:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:fileButton];
    UIButton *archiveButton = [UIButton buttonWithType:UIButtonTypeSystem];
    archiveButton.frame = CGRectMake(190, 260, 60, 30);
    [archiveButton setTitle:@"反归档" forState:UIControlStateNormal];
    [archiveButton addTarget:self action:@selector(archive:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:archiveButton];

}

- (NSString *)getPath
{
    //获得文件夹的路径
    /*
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *newPath = [filePath stringByAppendingPathComponent:@"archive"];
    return newPath;
     */
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *newPath = [path stringByAppendingPathComponent:@"archiver"];
    return newPath;
}
- (void)file:(UIButton *)button
{
    //获取输入框的内容
    UITextField *tf1 = (UITextField *)[self.view viewWithTag:100];
    UITextField *tf2 = (UITextField *)[self.view viewWithTag:101];
    /*
    //封装成Person对象
    Person *person = [[Person alloc] initWithName:tf1.text gender:tf2.text age:18];
    //1 创建归档对象
    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    //2 归档
    [archiver encodeObject:person forKey:@"person"];
    [person release];
    //3 结束归档, 当结束归档之后, 再归档无效
    [archiver finishEncoding];
    [archiver release];
    //4 data写入文件
    [data writeToFile:[self getPath] atomically:YES];
     */
    Person *person = [[Person alloc] initWithName:tf1.text gender:tf2.text age:18];
    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:person forKey:@"archiver"];
    [person release];
    [archiver finishEncoding];
    [archiver release];
    [data writeToFile:[self getPath] atomically:YES];
}
- (void)archive:(UIButton *)button
{
    /*
    //1 初始化NSMutableData对象
    NSMutableData *data = [NSMutableData dataWithContentsOfFile:[self getPath]];
    //2 创建一个反归档对象
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    //3 反归档
    Person *person = [unarchiver decodeObjectForKey:@"person"];
    //4 结束反归档
    [unarchiver finishDecoding];
    [unarchiver release];
     */
    NSMutableData *data = [NSMutableData dataWithContentsOfFile:[self getPath]];
    NSKeyedUnarchiver *unarchive = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    Person *person = [unarchive decodeObjectForKey:@"archiver"];
    [unarchive finishDecoding];
    [unarchive release];
    UITextField *tf1 = (UITextField *)[self.view viewWithTag:100];
    UITextField *tf2 = (UITextField *)[self.view viewWithTag:101];
    tf1.text = person.gender;
    tf2.text = person.name;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

ios-iOS 存取数据之归档.zip 简单的归档使用 立即下载

相关推荐

ios-解档归档.zip

不管类有多少个属性 只需要继承YBArchive这个类就可以了 就会把所有的属性都归档

iOS - 数据的归档和反归档

本篇文章主要介绍利用 NSKeyedArchiver 和 NSKeyedUnarchiver 对数据进行归档和反归档的操作。

Veggie的博客 1387

Zynq裸机调试RTL8211FS网卡踩坑记:从ping不通到完美兼容的完整代码修改

本文详细记录了在Zynq平台上使用Xilinx SDK(XSDK)调试RTL8211FS网卡的完整过程,从最初的ping不通问题到最终实现完美兼容的解决方案。通过分析PHY芯片的寄存器配置差异,提供了关键代码修改和调试技巧,帮助开发者快速解决类似问题。

weixin_42550597的博客 420

IOS 数据存储(NSKeyedArchiver 归档篇)

什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储。 归档的作用 之前将数据存储到本地,只能是字符串、数组、字典、NSNuber、BOOL等容器类对象,不能将自定义对象进行保存,而通过归档能将所有的对象转化为二进制数据存储到文件中。 归档的缺点 归档保存数据,只能一次性归档保存以及一次性解压。所以只...

weixin_30919429的博客 370

ESP32驱动TFT屏幕实战:LVGL与TFT_eSPI完美结合

本文详细介绍了如何在ESP32上结合TFT_eSPI驱动库与LVGL图形库,实现高效、流畅的嵌入式GUI开发。内容涵盖硬件连接、软件环境搭建、库配置、LVGL移植、界面创建及性能优化等全流程实战指南,帮助开发者快速构建低成本、高性能的交互式显示应用。

weixin_29206669的博客 200

数字电视中的AD(Audio Description)音频描述技术详解

AD(Audio Description)音频描述是一种辅助技术,旨在帮助视障人士更好地理解视觉内容。通过在节目或视频的自然停顿处插入额外的语音叙述来解释屏幕上的视觉信息,如人物动作、场景变化、文字说明等,从而让视力受损的人士也能获得完整的观影体验。AD服务不仅限于电视广播,也广泛应用于电影、剧院表演、在线视频平台等领域。PID:用于标识和区分不同的音频流。PMT表:提供每个音频流的详细信息,包括PID、编解码器类型和语言代码。时间戳:PTS和DTS用于同步音频与视频内容。解复用。

以实战经验介绍行业知识 740

【iOS】文件(对象数据)的归档和解档

本文对iOS开发中数据持久化方法之一 --- 归档解档进行了学习,包括对单个对象、自定义对象、多个对象的归档和解档

XY_Mckevince的博客 1109

Codex 实战 Skills:编写 Skill 自动为 ESP32 芯片生成 MQTT 订阅与发布的基础代码

为了更清晰地展示 Skill 的工作原理和两种语言的差异,以下提供原理图和比对表格。本文深入探讨了如何利用 Codex 的 Agent 智能体技能(Skills)自动化 ESP32 与 MQTT 通信的代码生成过程。我们首先分析了 IoT 开发的痛点,然后详细设计了 Skill 的输入配置,并分别提供了 MicroPython 和 C++ 两种语言的完整代码实现。通过对比两种语言的优缺点,帮助开发者根据项目需求选择合适的语言。最后,我们提供了详细的运行指南,确保开发者能够快速上手。Skill 设计哲学。

yueyeguzhuo的专栏 82

IOS三种归档(NSKeyArchieve)的总结

IOS三种归档(NSKeyArchieve)的总结 归档是一种IOS中常用来存储文件的一种方法,在面向对象的语言中,归档也就实际上可以将一切对象存储在文件中,以下是IOS开发中常见的三种文件归档方式,分别是简单归档、data归档、自定义归档。现分别总结如下: 1、简单归档: 简单归档是指把简单的字符串、数组等对象进行归档。用到的方法是archiveRootObject,语句为...

aibiao0099的博客 366

OSG三维渲染引擎编程学习之一:“第一章:OSG介绍” 之 “1.1 OSG简介”

第一章:OSG介绍; 1.1 OSG简介。

LuckyHanMo的博客 3222

公开 学生课堂行为数据集 SCB-Dataset: A Dataset for Detecting Student and Teacher Classroom Behavior

公开 学生课堂行为数据集 SCB-Dataset Student Classroom Behavior dataset

CSPhD-winston的博客 1万+

11.归档

归档,在其他语言中又叫“序列化”,就是将对象保存到硬盘;解档,在其他语言又叫“反序列化”就是将硬盘文件还原成对象。其实归档就是数据存储的过程,在IOS中数据的存储有五种方式: xml属性列表(plist归档) NSUserDefaults(偏好设置) NSKeyedArchiver归档(加密形式) SQLite3(嵌入式数据库) Core Data(面向对象方式的

u012076990的专栏 457

流体动力学仿真软件:Star-CCM+_(1).Star-CCM+基础及入门

Star-CCM+的用户界面(UI)分为多个部分,包括菜单栏、工具栏、工作区、视图窗口和控制台。菜单栏包含文件、编辑、视图、工具等常用菜单。例如,“File”菜单可以用于打开、保存和退出项目。工具栏提供常用的工具按钮,如新建项目、打开项目、保存项目等。也可以自定义工具栏,添加常用的功能按钮。工作区显示当前项目的结构和各个对象。可以通过拖拽方式组织和管理项目中的各个部分。视图窗口显示几何模型、网格、结果等。可以通过不同的视图模式查看和分析数据。控制台显示软件的运行日志和输出信息。

kkchenjj的博客 1200

iOS笔记—归档解档

ios数据持久化的一种方式。归档解档 // // main.m // NSKeyedArchiver // // Created by hhg on 15/9/10. // Copyright (c) 2015年 hhg. All rights reserved. // #import &lt;Foundation/Foundation.h&gt; int main(int ar...

csdn_hhg的博客 1103

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iOS 数据持久化 (一)

iOS开发常用的数据持久化方式有NSUserdefaults(属性列表),NSKeyedArchiver(归档/解归档),write , SQLite 3, CoreData等。 ###1.【属性列表】 NSUserDefaults 是一个单例,整个程序中只有一个实例对象,用于数据的永久保存,也是使用最简单。 ⚠️支持的数据类型有:NSNumber,double,float,NSInteger,N...

hubangguo的博客 360

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ios 常用的持久化数据存储方式

1.plist文件存储 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本) /Users/apple/Library/Application Supp...

azyiytn69263的博客 242

iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据。在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹。iOS开发中,我们需要数据持久化这一种技术,也需要不断在实际开发的工作与学习中完善数据持久化这一开发技术。 【本次开发环境: Xcode:7.2 iOS Simulator:iphone...

weixin_30527551的博客 379

iOS 归档

#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end #import "AppDelegate.h" #import...

weixin_30707875的博客 62

iOS数据持久化——属性列表和归档

iOS数据持久化的方式分为三种 属性列表 (自定义的Property List 、NSUSErDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite、Core Data、第三方类库等) 本文只介绍:属性列表和归档 一. 属性文件(Plist) Plist一般用于存储Dictionary、Array、Boolean、Data、Date

诠释完美 1040

NSKeyedArchiver/NSCoding归档(序列化)

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List 、NSUserDefaults)归档 (NSKeyedArchiver)数据库 (SQLite、Core Data、第三方类库等)   下面主要来介绍一个归档NSKeyedArchiver。    归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次重写打开程序的时候,可

luckxing的博客 596

项目实战:APP登入后,数据的持久化储存

项目的数据持久化存储很多:NSUserDefaults、解归档、SQLite和CoreData,根据不同需求选择其中一种吧。这里主要是讲解项目在登录成功后,储存个人信息,所以选择了NSUserDefaults和解归档 沙盒NSUserDefaults一、NSUserDefaults一般可以直接存储NSNumber(NSInteger、float、double),NSString,NSDate,NSA

汪继宏的BLOG 915

iOS中常用的持久化存储方式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33895657的博客 95

IOS 14.5版本之解档和归档的API学习

IOS 14.5版本之解档和归档的API学习 第一部分 回顾一下老api的使用,将对象持久化至硬盘里面。 1.为什么我们要学习解档和归档, 有什么作用。当 plist 文件存储无法满足我们的需求的时候,或者 用户偏好设置无法存储我们自定义的对象的时候,就需要解档和归档的知识上场了。首先我们体验一下IOS12之前API的 解档和归档的知识。IOS12之后,苹果替换了之前的写法了。 我们需要重写学习。不要念想之前的api函数,没有意义。苹果既然要废弃之前的写法,肯定有它的道理,无需深究。时代在进步,科技在进步。

A1521315qwss的博客 414

iOS 数据持久化-归档

1.将任何对象,或数据结构转换为NSData类对象的过程,成为归档,亦称之为数据的序列化 2.解归档,首先要确保你有同样的数据结构来接收解归档的数据   需要归档的数据结构中,任何对象都必须遵从NSCoding,实现协议方法 - (void)encodeWithCoder:(NSCoder *)aCoder; // 归档时调用,   - (id)initWithCoder:(NSCo

陌上一梦觅琴音 452
上一篇: iOS XML/JSON解析
下一篇: UITabelView代理方法详解
vaercly
博客等级 码龄12年 46粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值