iOS开发数据持久化,归档方法

1.把要显示的数据转换为模型,把对象归档,然后把存起来的对象解析出来就可以使用

2.可以封装起来方便使用,封装的方法存入百度云,需要的可以留言

/** 归档方法 */
-(void)archive
{
    /**
     *     常用的几个文件目录   directory目录
     * NSDownloadsDirectory 下载文件目录
     * NSDocumentDirectory 数据文件目录
     * NSCachesDirectory 缓存文件目录
     * NSMoviesDirectory 电影文件目录
     * NSPicturesDirectory 图片文件目录
     * NSMusicDirectory 音乐文件目录
     *
     */
    NSArray *myPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    //Document目录下的第一个文件对象
    NSString *docPath = [myPaths firstObject];
    //新建一个文件并返回该文件路径
    NSString *fileNamePath = [docPath stringByAppendingPathComponent:@"archive.data"];
    //归档
    [NSKeyedArchiver archiveRootObject:@"数据模型" toFile:fileNamePath];
    //读档
    NSString *duixaing = [NSKeyedUnarchiver unarchiveObjectWithFile:fileNamePath];

}

存档的另一种方法,自己需要研究的是归档的路径,归档的方法 ,读档的方法(注明用的是两个不同的类,一个是存档的类,一个是读档的类,)

存的数据是以二进制的形式存进手机本地的

/** 保存数据进行归档 */
- (IBAction)saveBtn:(id)sender {
    NSString *filePath = [self filePathWithfileName:@"student.archive"];
    NSMutableData *theData = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:theData];
    studentsInfo *Info = [[studentsInfo alloc] init];
    Info.sno = self.snoLabel.text;
    Info.name = self.nameLabel.text;
    Info.classes = self.classLabel.text;
    [archiver encodeObject:Info forKey:@"mystudent"];
    [archiver finishEncoding];
    [theData writeToFile:filePath atomically:YES];
    NSLog(@"%@",filePath);
}
/** 归档文件读取数据 */
- (IBAction)readBtn:(id)sender {
    NSString *filePath = [self filePathWithfileName:@"student.archive"];
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    if (data.length > 0) {
        NSKeyedUnarchiver *Unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
        studentsInfo *Info = [Unarchiver decodeObjectForKey:@"mystudent"];
        [Unarchiver finishDecoding];
        self.snoLabel.text = Info.sno;
        self.nameLabel.text = Info.name;
        self.classLabel.text = Info.classes;
    }
    
}

/** 返回一个在document文件下的文件的路径(自己创建的文件) */
-(NSString *)filePathWithfileName:(NSString *)fileName
{
    NSArray *myPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *myDocPath = [myPaths firstObject];
    
    NSString *filename = [myDocPath stringByAppendingPathComponent:fileName];
    return filename;
}

如图示封装的伪代码,使用方法引用头儿文件既可。

时间: 2024-10-24 15:45:33

iOS开发数据持久化,归档方法的相关文章

iOS开发——数据持久化OC篇&(二)属性列表

属性列表 属性列表文件是一种XML文件,Foundation框架中的数组和字典等都可以于属性列表文件相互转换. NSArray类常用读写属性列表文件的方法: +arrayWithContentsOfFile:类级构造方法,用于从属性列表文件中读取数据,创建NSArray对象. -initWithContentsOfFile:实例构造方法,用于从属性列表文件中读取数据,创建NSArray对象. -writeToFile:atomically:该方法把NSArray对象写入到属性列表文件中,第一个参

iOS开发——数据持久化OC篇&(三)对象归档

归档 iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 1 // 2 // YYViewController.m 3 /

IOS开发-数据持久化(一)【文本文件+二进制归档】

概要 数据持久化分为不同的方式,本章主要简示了数据归档(一般而说的序列化)和写XML的文本文件方式.其中XML文本方式主要使用NSArray或者NSDictionary的writeToFile方法,而数据归档使用了NSKeyedArchiver/NSKeyedUnarchiver等实现数据的归档(序列化). 结果展示 程序展示 数据化文件 注意新版本的IOS模拟器的目录和以前的目录不在同一个地方,其中plist文件是XML文件,可打开直接查看,而archi是归档的二进制文件. 流程概要 1.新建

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

iOS开发——数据持久化OC篇&(七)CoreData高级常识

CoreData高级常识 关于CoreData貌似实际开发中很少用到,基本上是个有九个公司不会使用它,因为都说是性能不好,但是作为一个程序员,了解及其使用时必须了, 下面是我从一位大神那里搬过来的一下Core详细介绍,相信以后总有一天会帮我解决不少学习CoreData中的问题! 一.技术概览 1. Core Data 功能初窥 对于处理诸如对象生命周期管理.对象图管理等日常任务,Core Data框架提供了广泛且自动化的解决方案.它有以下特性. (注:对象图-Object graph的解释:在面

iOS开发——数据持久化OC篇&总结

数据持久化总结 1 //1.沙盒:/Users/nono/Library/Application Support/iPhone Simulator/5.1/Applications/2D135859-1E80-4754-B36D-34A53C521DE3 2 /** 3 // 1.获取程序的Home目录 4 NSString *home = NSHomeDirectory(); 5 NSLog(@"应用程序目录:%@", home); 6 7 // 2.获取Documents目录 8

IOS开发--数据持久化篇文件存储(二)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 承接上篇博客我们来看看IOS开发中是如何将一个自定义的对象进行归档的 本篇博客将介绍以下几个方面的内容 1)普通的单个对象归档操作 2)拥有继承关系的对象归档 3)同时将多个对象进行归档 1.普通的单个对象归档操作 首先我们来看下最简单的单个对象归档操作 1.自定义一个跟小明一样有名的类(

IOS开发-数据持久化(二)【sqlite数据库】

概要 本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致. 结果展示 (其实没啥看的) 流程概要 1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了 2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示 3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码. 主要代码 数据库操作代码 -(id)initWithFilePath:(NSString*)file {

iOS开发数据持久化技术01——NSUserDefault介绍

有疑问的请加qq交流群:390438081 我的QQ:604886384(注明来意) 微信:niuting823 首先说下什么是数据持久化技术 NSString *str = @"hello world"; ->内存 实际上就是将数据存储到硬盘上,针对于iOS应用程序是存储到沙盒中. . NSUserDefault介绍 1 是系统提供的自定义的类,可以随时在需要使用的地方声明对象,并随时需要的时候取出对象 2 支持的对象类型:NSString, NSNumber, NSData,