iOS 数据储存--归档

四种数据持久化方式 http://www.cocoachina.com/ios/20160617/16739.html

//先把数据在model中归解档

。h

@property(nonatomic,copy)NSString *email;
@property(nonatomic,copy)NSString *uid;
@property(nonatomic,copy)NSString *mobile;
@property(nonatomic,copy)NSString *vip;
@property(nonatomic,copy)NSString *regtime;
@property(nonatomic,copy)NSString *is_sec_pwd;

*is_sec_pwd;

。m

#import "UserModel.h"
static UserModel *model;
@implementation UserModel
+(UserModel *)defaultCellModel{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!model) {
            model = [[UserModel alloc]init];
        }
    });
    return model;
}
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.account forKey:@"account"];
    [aCoder encodeObject:self.regmobile forKey:@"regmobile"];
    [aCoder encodeObject:self.sec1_question forKey:@"sec1_question"];
    [aCoder encodeObject:self.headimage forKey:@"headimage"];
    [aCoder encodeObject:self.expert_audit forKey:@"expert_audit"];

}

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
    self = [super init];

    if(self)

    {

        self.account = [aDecoder decodeObjectForKey:@"account"];

        self.regmobile = [aDecoder decodeObjectForKey:@"regmobile"];
        self.sec1_question = [aDecoder decodeObjectForKey:@"sec1_question"];
        self.headimage = [aDecoder decodeObjectForKey:@"headimage"];

    }

    return self;

}

@end

//

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff }
span.s1 { }

NSUserDefaults

保存

Model数据-》归档-》NSUserdefaults

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

//不能直接存取NSObject,需要先归档转成NSData

NSData  *data  = [NSKeyedArchiver archivedDataWithRootObject:model];

[defaults setObject:data forKey:@"model"];

NSUserdefaults-》解档-》Model数据

NSData *modeldata = [[NSUserDefaults standardUserDefaults]objectForKey:@"model"];

usermodel = [NSKeyedUnarchiver unarchiveObjectWithData:modeldata];

//文件中保存

#import "ViewController.h"

#import "linePesist.h"

//导入数据模型类

#define CodeString  @"CodeString"

@implementation ViewController

-(NSString *)dataFile{

NSArray *ar = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

NSString *fielpath = [ar objectAtIndex:0];

return [fielpath stringByAppendingPathComponent:@"data.archive"];

//改修后缀名,以免与属性列表创建的文件重复,而加载成旧的的文件。 不用查字典了。。archive表归档

}

- (void)viewDidLoad {

[super viewDidLoad];

NSString *filepath = [self dataFile];

NSLog(@"%@",filepath);

if([[NSFileManager defaultManager]fileExistsAtPath:filepath]) {

//创建2个实例

NSData *data = [[NSData alloc]initWithContentsOfFile:filepath]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

//把已归档的对象读取。赋值给linepesist

linePesist *linepesist =[unarchiver decodeObjectForKey:CodeString]; [unarchiver finishDecoding];

//完成解档

for(int i = 0;i

时间: 2024-10-08 17:30:53

iOS 数据储存--归档的相关文章

IOS 数据储存

IOS 数据存储 ios数据存储包括以下几种存储机制: 属性列表 对象归档 SQLite3 CoreData AppSettings 普通文件存储 1.属性列表 [cpp] view plaincopy // //  Persistence1ViewController.h //  Persistence1 // //  Created by liu lavy on 11-10-3. //  Copyright 2011 __MyCompanyName__. All rights reserve

iOS 数据的归档(NSKeyedArchiver )与数据的解档(NSKeyedUnarchiver) 加密 提高安全性

1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 /** 5 * 创建归档与解档的按钮 6 */ 7 @property(strong,nonatomic) UIButton *btnAchiver; 8 @property(strong,nonatomic) UIButton *btnUnAchiver; 9 10 11 #import "ViewController.h&quo

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

IOS数据持久化之归档NSKeyedArchiver

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

IOS中利用NSKeyedArchiver进行数据的归档和恢复

1.相关知识点: <1> 可以利用NSKeyedArchiver 进行归档和恢复的对象类型:NSString .NSDictionary.NSArray.NSData.                        NSNumber等 <2> 使用是必须遵循NSCoding协议对象,实现两个方法: encodeWithCoder:归档对象时,将会调用该方法. initWithCoder:每次从文件中恢复对象时,调用该方法. 2.简单例子阐述详细步骤 <1> 创建一个学生

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

IOS数据存储之归档(NSKeyedArchiver)/解档(NSKeyedUnarchiver)

前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档和解档.我们先来回顾一下JAVA是怎么实现保存一个自定义对象的!首先一个自定义对象必须实现Serializable接口,然后把一个对象序列化成二进制数据写入一个byte[]数据或者文件,反之则是从一个二进制数据或者文件中读取二进制数据反序列化成对象,所以我认为ios的归档解档其实就是类似JAVA序列化反序列化的过程,下面写个程序来尝试一下. 先测试下基础类型: //归

IOS 数据存储(NSKeyedArchiver 归档篇)

什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字典.NSNuber.BOOL等容器类对象,不能将自定义对象进行保存,而通过归档能将所有的对象转化为二进制数据存储到文件中. 归档的缺点 归档保存数据,只能一次性归档保存以及一次性解压.所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据.

IOS数据存储 —— 2 存储方式

IOS数据存储方式 iOS开发常用数据存储方式有:plist.偏好设置 NSUserDefaults.对象归档 NSKeyedArchiver.SQLite3和Core Data 1. plist文件 存储 plist文件通常用于储存用户设置,利用xml属性列表归档NSDictionary.NSArray.NSNumber等类型数据 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用 注意:plist不能存储自定义对象 2. 偏好设置 NSUserDefaults 偏好设置