数据存储

一、NSCoding :  使用NSCoding需要遵守<NSCoding>

保存:

/**

 *  将某个对象写入文件时会调用

 *  在这个方法中说清楚哪些属性需要存储

 */

MJStudent.m

- (void)encodeWithCoder:(NSCoder *)encoder

{

    [encoder encodeObject:self.no forKey:@"no"];

    [encoder encodeInt:self.age forKey:@"age"];

    [encoder encodeDouble:self.height forKey:@"height"];

}

 

存储:

 // 1.新的模型对象

    MJStudent *stu = [[MJStudent alloc] init];

    stu.no = @"42343254";

    stu.age = 20;

    stu.height = 1.55;

    

    // 2.归档模型对象

    // 2.1.获得Documents的全路径

    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    // 2.2.获得文件的全路径

    NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

    // 2.3.将对象归档

 

    [NSKeyedArchiver archiveRootObject:stu toFile:path];

 

 

 

/**

 *  从文件中解析对象时会调用

 *  在这个方法中说清楚哪些属性需要存储

 */

- (id)initWithCoder:(NSCoder *)decoder

{

    if (self = [super init]) {

        // 读取文件的内容

        self.no = [decoder decodeObjectForKey:@"no"];

        self.age = [decoder decodeIntForKey:@"age"];

        self.height = [decoder decodeDoubleForKey:@"height"];

    }

    return self;

 

}

 

 

读取:

 

// 1.获得Documents的全路径

    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    // 2.获得文件的全路径

    NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

    

    // 3.从文件中读取MJStudent对象

    MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    

 

    NSLog(@"%@ %d %f", stu.no, stu.age, stu.height);

 

二、

偏好设置:(保存与读取)

保存:

// 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences)

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    

    // 2.存储数据

    [defaults setObject:@"mj" forKey:@"account"];

    [defaults setObject:@"123" forKey:@"pwd"];

    [defaults setInteger:10 forKey:@"age"];

    [defaults setBool:YES forKey:@"auto_login"];

    

    // 3.立刻同步

    [defaults synchronize];

 

 

读取:

 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    

    NSString *account = [defaults objectForKey:@"account"];

    BOOL autoLogin = [defaults boolForKey:@"auto_login"];

 

    NSLog(@"%@ -- %d", account, autoLogin);

 

三、

Plist存储:(保存与读取)

保存:

// 不同的设备根路径可能不一样,设备和虚拟机的路径也不一样,所以最好使用NSHomeDirectory(),系统会自动返回一个根路径

// 1.获得沙盒根路径

    NSString *home = NSHomeDirectory();

 

// 拼接路劲,根路径有Documents这个文件夹,所以拼接这个文件夹路劲

// 2.拼接document路径

 

    NSString *docPath = [home stringByAppendingPathComponent:@"Documents”];

 

 

// 4.新建数据

NSArray *data = @[@"jack", @10, @"ffdsf”];

// 5.文件路径

NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist”];

// 将文件写入对应的文件路径保存

[data writeToFile:filepath atomically:YES];

 

 

读取:

// 1.获得沙盒根路径

    NSString *home = NSHomeDirectory();

    

    // 2.document路径

    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];

    

    // 3.文件路径

    NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];

    

    // 4.读取数据

    NSArray *data = [NSArray arrayWithContentsOfFile:filepath];

 

    NSLog(@"%@", data);

转载于:https://www.cnblogs.com/pocket-mood/p/4458796.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

犯人释放的C语言程序,C语言的自动关机程序和一个用来整人的小程序

可以用C语言中的system()函数来实现系统的自动关机程序&#xff0c;可以设置多长时间后将自动关机。当然马上关机也是可以的&#xff0c;我们就可以恶搞别人计算机了(你事先得知道怎么解)&#xff0c;将写好的自动关机程序复制到别人电脑&#xff0c;然后将可执行的文件设为开机…

[mysql] linux下使用yum安装mysql

From: http://www.2cto.com/database/201207/141878.html linux下使用yum安装mysql1、安装查看有没有安装过&#xff1a;yum list installed mysql*rpm -qa | grep mysql*查看有没有安装包&#xff1a;yum list mysql*安装mysql客户端&#xff1a;yum install mysql安装mysql 服…

图解MapReduceMapReduce整体流程图

1.图解MapReduceMapReduce整体流程图 并行读取文本中的内容&#xff0c;然后进行MapReduce操作 Map过程&#xff1a;并行读取三行&#xff0c;对读取的单词进行map操作&#xff0c;每个词都以<key,value>形式生成 reduce操作是对map的结果进行排序&#xff0c;合并&#…

阿里云推出CloudDBA,解决数据库性能优化和问题诊断难题

问题诊断(trouble shooting) 和 性能优化(performance tunning) 一直都是数据库领域的专业问题&#xff0c;需要资深DBA的专业技能才能胜任解决&#xff0c;但这样的人才是稀缺的&#xff0c;无法及时满足大部分的企业紧急需求。如果有一款产品能够在大多数情况下&#xff0c;用…

c语言程序设计学生信息管理系统代码,c语言程序设计学生成绩管理系统源代码.pdf...

c语言程序设计 学 生 成 绩 管 理 系 统 源代码#include#include#include#include#define MAX 80int a;typedef struct /*定义结构体数组*/{ char num[10];char name[20];int score;} Student;Student stu[MAX];int menu_select(){char c;do{system("cls");/*清屏*/p…

初探ArrayList之删除

1.返回删除元素的删除方法 public E remove(int index) {rangeCheck(index);modCount;//记录修改次数的变量E oldValue elementData(index);//根据数组下标拿到指定元素int numMoved size - index - 1;//计算移动位数if (numMoved > 0)System.arraycopy(elementData, inde…

UESTC_秋实大哥与花 2015 UESTC Training for Data StructuresProblem B

B - 秋实大哥与花 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status秋实大哥是一个儒雅之人&#xff0c;昼听笙歌夜醉眠&#xff0c;若非月下即花前。 所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行&#xff…

java的三大特性,封装,继承,多态

封装 Java代码 /** * 所谓封装&#xff0c;就是将对象具有的成员变量和成员函数包装和隐藏起来&#xff0c;让外界无法直接使用&#xff0c; * 被封装的成员只能通过某些特定的方式才能访问。 * 实现封装有两个步骤&#xff1a; * 1、将不能暴露的成员隐藏起来&#x…

银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc

《操作系统》课程综合性实验报告姓名&#xff1a; 学号&#xff1a; 2016 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟&#xff0c;进一步理解资源分配的基本概念&#xff0c;加深对资源申请&#xff0c;资源分配(银行家算法)以…

GetModuleHandle(NULL)获取当前DLL模块基址?

做一项目想在DLL内部代码实现获取本DLL的模块基址&#xff0c;而且不知道本DLL名称 最简单的方法是想到GetModuleHandle(NULL)&#xff0c;是否可以呢? 参看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己尝试了一下: DLL代码(testDll): BOOL …

DataTable是否存在某个列的判断

使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【评分】第三次作业-团队展示

【评分】第三次作业-团队展示 总结 【2017-10-10】更新&#xff1a; 分数映射至 [1,2] 分 【注意】&#xff1a; 为了保护大家隐私&#xff0c;以后发表博客&#xff1a; 涉及到学号时&#xff0c;仅提供后三位涉及到姓名时&#xff0c;仅提供名&#xff08;省略姓&#xff09;…

c语言变量为什么要定义,C语言为什么要规定对所用到的变量要“先定义,后使用”...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int a10;以上一句话对变量a进行了声明&#xff0c;定义以及初始化extern int a;以上一句话仅仅对变量a进行了声明&#xff0c;将a的链接属性设置为externalint *p;以上定义了一个指针int a10;int *p;p&a;以上为指针变量进行了赋…

iOS 开发--github的demo

令人惊讶的是&#xff0c;YYText 虽然代码量很大&#xff08;超过一万行&#xff09;&#xff0c;但它只是 ibireme 的作品之一。ibireme 利用业余时间完成了 YYKit 工具库&#xff0c;包括&#xff1a; YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 缓存…

RabbitMQ快速安装配置指南

RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话&#xff0c;这里总结一下在CentOS7环境下的安装配置过程。如需理解原理&#xff0c;请看官网原文的安装指南或翻译1. 安装RabbitMQ server ## 安装epel源 yum install -y epel-release## 安装Erlang yum inst…

[转]基于Starling移动项目开发准备工作

最近自己趁业余时间做的flash小游戏已经开发得差不多了&#xff0c;准备再完善下ui及数值后&#xff0c;投放到国外flash游戏站。期间也萌生想法&#xff0c;想把游戏拓展到手机平台。这两天尝试了下&#xff0c;除去要接入ane接口的工作&#xff0c;小游戏本身不用做任何改动就…

c语言float输出分数,c语言同一题目求解结果用float和int输出值差1.

c语言同一题目求解结果用float和int输出值差1.答案:3 信息版本&#xff1a;手机版解决时间 2018-12-08 22:35已解决2018-12-08 05:38c语言同一题目求解结果用float和int输出值差1.最佳答案2018-12-08 06:01试试这样就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《构建之法》阅读笔记02

今天我阅读了《构建之法》4-6章。有许多的感悟。 以前编程序总喜欢乱命名变量&#xff0c;觉得自己看的懂就行了。但读完构建之法第四章。我知道了程序是给别人看的&#xff0c;然后那只是程序比较简单而已。如果一个程序过于庞大&#xff0c;而变量的命名有没有实际的意义&…

2017-10-03 前端日报

2017-10-03 前端日报 精选 你需要知道的几类npm依赖包管理看Zepto如何实现增删改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

PS: 我先旁观下大师们的讨论&#xff0c;得多看书了~别人说的&#xff1a;“看了一下不觉得评注对到哪里去&#xff0c;只有吹毛求疵之感。 比如同步异步介绍&#xff0c;本来就无大错&#xff1b;比如node图里面的OS operation&#xff0c;推敲一下就可以猜到那是指同步操作&a…