一、Swift 3.0

1、model

class userModel: NSObject,NSCoding {

    var account: String = ""
var regmobile: String = ""
var sec1_question: String = "" func encode(with aCoder: NSCoder) {
aCoder.encode(account, forKey:"account")
aCoder.encode(regmobile, forKey:"regmobile")
aCoder.encode(sec1_question, forKey:"sec1_question")
aCoder.encode(expert_audit, forKey:"expert_audit") } required init?(coder aDecoder: NSCoder) {
super.init()
account = (aDecoder.decodeObject(forKey:"account")as? String)!
status = (aDecoder.decodeObject(forKey:"status")as? String)!
nickname = (aDecoder.decodeObject(forKey:"nickname")as? String)! } }

2、 归解档

  //  路径:
let userAccountPath = "\(NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first!)/southDream.data" //归档
NSKeyedArchiver.archiveRootObject(model, toFile: userAccountPath + "/userModel") //解档
if NSKeyedUnarchiver.unarchiveObject(withFile: userAccountPath) != nil { let model = NSKeyedUnarchiver.unarchiveObject(withFile: userAccountPath) as? userModel
}

二、OC

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

//

//归档数据,并用二进制写入文件
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[keyedArchiver encodeObject:Users forKey:@"users"];//Users已知的保存用户信息的数组
[keyedArchiver finishEncoding];
[data writeToFile:@"归档数据保存路径" atomically:YES];
[objc] view plain copy print?
//读取上面已经保存好的文件,并反归档后在程序中使用数据
NSData *newData = [NSData dataWithContentsOfFile:@"归档数据保存路径"];
NSKeyedUnarchiver *keyedUnArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:newData];
NSArray *users = [keyedUnArchiver decodeObjectForKey:@"users"];
for (User *user in users) {
NSLog(@"name = %@ pw = %@",u.name,u.password);
} 注意:需要归档的数据中如果含有自定义的对象,那么该对象需遵守<NSCoding>协议,并重写如下方法:
[objc] view plain copy print?
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:对象属性 forKey:@"归档的key"];
}
[objc] view plain copy print?
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self) {
实例变量 = [aDecoder decodeObjectForKey:@"归档的key"];
}
return self;
}

用法扯皮

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

。h

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

*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"]; } - (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

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

iOS Swift3.0 OC 数据储存--归档的更多相关文章

  1. AFNetworking配合Swift3.0请求数据

    首先用桥接或pods将AFNetworking导入项目,在这不再赘述,然后创建一个单例NetWorkTools.swift 继承:AFHTTPSessionManager import UIKit i ...

  2. Swift3.0语言教程获取C字符串

    Swift3.0语言教程获取C字符串 Swift3.0语言教程获取C字符串,为了让Swift和C语言可以实现很好的交互,开发者可以使用NSString的cString(using:)方法在指定编码格式 ...

  3. iOS开发 - OC - 实现本地数据存储的几种方式一

    iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...

  4. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  5. iOS - OC 数据持久化

    1.Sandbox 沙箱 iOS 为每个应用提供了独立的文件空间,一个应用只能直接访问为本应用分配的文件目录,不可以访问其他目录,每个应用自己独立的访问空间被称为该应用的沙盒.也就是说,一个应用与文件 ...

  6. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  7. Swift3.0 函数闭包与OC Block

    刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> S ...

  8. Swift3.0 iOS获取当前时间 - 年月日时分秒星期

    Swift3.0 iOS获取当前时间 - 年月日时分秒星期func getTimes() -> [Int] { var timers: [Int] = [] // 返回的数组 let calen ...

  9. iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

    今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...

随机推荐

  1. linux下高可用LVS搭建及配置方法

    一,安装与配置ipvsadm   ipvsadm --help  #查询是否安装成功     二,配置Director Server服务器 1. ifconifg eth0:0 183.61.87.4 ...

  2. springboot使用i18n时properties文件中文乱码

    在springboot使用i18n进行国际化文件配置时,文件名为messages_zh_CN.properties的文件中填写中文信息,当使用浏览器进行访问时,出现中文乱码,此时在idea中进行修改s ...

  3. python从2.7升级到3.5 需要主要的问题

    今天鼓足勇气把我们python从2.7升级到3.5.我用的是pycharm开发工具.升级过程遇到一些问题小结下: 1.右击项目: 找到左侧 project interpreter选项,配置项目开发环境 ...

  4. android shape 大全 (转)

    1. 各属性的配置语法 在项目 res/drawable 文件夹中创建一个以 shape 为根节点的 XML 文件,基本语法如下: <?xml version="1.0" e ...

  5. AJAX技术之网易滚动新闻的简单实现(附源码)--AJAX

    1.AJAX简介: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法 ...

  6. 永中DCS再添喜讯:顺利签约海信集团

    近日,永中DCS与海信集团一起携手,共创文档在线预览新篇章.出于对永中DCS文档在线预览产品的品质与服务的信赖,海信集团选择永中DCS为其提供文档在线预览技术支持,助力移动化办公(EHR系统)发展,提 ...

  7. mvc约定

    mvc是围绕一些基于约定的默认项,这写默认项在必要时可以覆盖,这个概念通常成为"约定优于配置". 比如没必要在web.config中设置views,models等文件夹的名称,已经 ...

  8. jQuery开发自定义插件 $.extend()与$.fn.extend()

    jQuery extend()和jQuery.fn.extend() jQuery提供两个用于封装扩展的方法: 1.$.extend(); 扩展jQuery类方法,即jQuery全局方法 (在全局可直 ...

  9. ubuntu指令记录

    记录一些指令,便于查看使用. 1.sudo -以其他身份运行命令,预设身份为root. 2.ctrl+alt+T打开终端(命令行窗口) 3.如何判断linux系统是32位还是64位,指令:getcon ...

  10. google guava cache缓存基本使用讲解

    代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...