iOS-数据持久化-偏好设置

一、简单介绍

很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能

每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。比如,保存用户名、字体大小、是否自动登录

存储位置:

存储形式:

二、代码示例

1.storyboard

2.代码

复制代码
 1 //2 //  YYViewController.m3 //  01-偏好设置4 //5 //  Created by apple on 14-6-7.6 //  Copyright (c) 2014年 itcase. All rights reserved.7 //8 9 #import "YYViewController.h"
10 //偏好设置
11 @interface YYViewController ()
12 /**
13  *保存数据
14  */
15 - (IBAction)saveData:(id)sender;
16 /**
17  *  读取数据
18  */
19 - (IBAction)readData:(id)sender;
20 
21 @end
22 
23 @implementation YYViewController
24 
25 - (IBAction)saveData:(id)sender {
26     //1.获取NSUserDefaults对象
27     NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
28     
29     //2保存数据(如果设置数据之后没有同步, 会在将来某一时间点自动将数据保存到Preferences文件夹下面)
30     [defaults setObject:@"yangyong" forKey:@"name"];
31     [defaults setInteger:23 forKey:@"age"];
32     [defaults setDouble:1.73f forKey:@"height"];
33     [defaults setObject:@"man" forKey:@"gender"];
34     
35     //3.强制让数据立刻保存
36     [defaults synchronize];
37 }
38 
39 - (IBAction)readData:(id)sender {
40     //1.获取NSUserDefaults对象
41     NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
42     //读取保存的数据
43     NSString *name=[defaults objectForKey:@"name"];
44     NSString *gender=[defaults objectForKey:@"gender"];
45     NSInteger age=[defaults integerForKey:@"age"];
46     double height=[defaults doubleForKey:@"height"];
47     //打印数据
48     NSLog(@"name=%@,gender=%@,age=%d,height=%.1f",name,gender,age,height);
49 }
50 @end
复制代码

3.点击保存数据,读取数据按钮打印如下

三、补充说明

1.保存数据

复制代码
    //1.获取NSUserDefaults对象NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];//2保存数据[defaults setObject:@"yangyong" forKey:@"name"];[defaults setInteger:23 forKey:@"age"];[defaults setDouble:1.73f forKey:@"height"];[defaults setObject:@"man" forKey:@"gender"];//3.强制让数据立刻保存[defaults synchronize];
复制代码

2.读取数据

复制代码
   //1.获取NSUserDefaults对象NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];//2.读取保存的数据NSString *name=[defaults objectForKey:@"name"];NSString *gender=[defaults objectForKey:@"gender"];NSInteger age=[defaults integerForKey:@"age"];double height=[defaults doubleForKey:@"height"];
复制代码

3.重要说明

(1)偏好设置是专门用来保存应用程序的配置信息的, 一般情况不要在偏好设置中保存其他数据。如果利用系统的偏好设置来存储数据, 默认就是存储在Preferences文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。

(2)使用偏好设置对数据进行保存之后, 它保存到系统的时间是不确定的,会在将来某一时间点自动将数据保存到Preferences文件夹下面,如果需要即刻将数据存储,可以使用[defaults synchronize];

(3)注意点:所有的信息都写在一个文件中,对比简单的plist可以保存和读取基本的数据类型。

(4)步骤:获取NSuserDefaults,保存(读取)数据

 

转载于:https://www.cnblogs.com/LifeTechnologySupporter/p/5016719.html

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

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

相关文章

怎么比对两个html列表,两个表格对比,如何快速找出不同数据!

给你两个表格,如何快速的找出不同数据呢?一行数据,一行数据的去查看对比?那样效率太低。今天,小汪老师就来给大家分享几种超实用的方法。01突出显示不同单元格所在行Sheet1和Sheet2两个表格,我们来对比一下…

WPF实现拟物旋转按钮

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织有小伙伴提出需要实现鼠标经过旋转进度条增加。 由于在WPF中没有现成的鼠标经过旋转控件,所以我们自己实现一个。PS:有更好的方式欢迎推荐。01—…

高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变...

全世界只有3.14 % 的人关注了爆炸吧知识去年3月15日,ACM 计算理论年会(STOC)Danny Lewin 最佳学生论文奖揭晓,获奖论文作者为来自麻省理工学院的陈立杰和来自 Weizmann Institute 的 Roei Tell。ACM STOC (Symposium o…

世界大百科全书!耶鲁大学教授再出神作!用1000幅图片,讲明白45亿年历史......

▲点击查看哈佛大学本杰明教授曾说:“越是到了高等教育的阶段,人们就越重视从历史中总结经验,尤其是精英阶段。很多人都想好好读读历史,但是一直以来,读历史都有一个问题:看着满满都是字的大部头&#xff0…

Hostonly cookie是什么鬼?

点击上方蓝字关注我们吧知道cookie hostonly属性的请举手🧐01Cookie常见姿势、疑难梳理目前w3c定义浏览器存放每个cookie需要包含以下字段:cookie属性基本描述举例备注namevaluecookie键值对ida3fWaexpirescookie过期时间expiresTue, 10-Jul-2013 08:30:…

系统即将关机请保存关机是由nt_设置Windows电脑自动关机

为了减少长时间沉迷电脑而忘记时间,设置Windows电脑自动关机是必要的事。 在我的电脑里,每到晚上10点都会自动关机。当然不会立刻关机,而是设置了1分钟的预留时间给自己保存一些文档资料。 Windows内建的Shutdown指令让人很方便的对这些进行操…

华为网络设备上的常用安全技术(一)

安全技术1:ACL 说明:ACL (Access Control List,访问控制列表)主要用来实现流识别功能。网络设备为过滤数据包,需要配置一系列的匹配规则,以识别需要过滤的报文。在识别出特定的报文之后&#xf…

java学习第七天

2019独角兽企业重金招聘Python工程师标准>>> 内部类 在类的内部也可以定义另一个类 ------------------------------------------------------------//类嵌套类,类中带有类//内部类跟方法一样,可以使用全部的访问权限修饰符,用法是一样的 接口 Int…

并不是每个女生都能穿出这种效果......

1 阿姨,我需要一个你▼2 像极了是悬空的...▼3 放弃吧,整点阳间的...▼4 一个人如何自拍?(Twitter:Kskb_Tsuki)▼5 哥哥表示睡着了就把她饼干吃了...(via.dy俩小小赵)▼6 敲法器…

手把手教你学Dapr - 1. .Net开发者的大时代

Dapr全称Distributed Application Runtime,分布式应用运行时Dapr的口号简化云原生应用开发,聚焦在应用的核心逻辑,让代码简单、可移植Dapr的目标最佳实践的构建块任何语言或框架一致性,可移植,开放的API采纳标准可扩展…

电子计算机制作探测,如何自己制作一个简易的金属探测器

这是一个金属探测电路,它可以隔着地毯探测出地毯下的硬币或金属片。这个小装置很适合动手自制。一、元器件的准备电路中的NPN型三极管型号为9014,三极管VT1的放大倍数不要太大,这样可以提高电路的灵敏度。VD1-VD2为1N4148。电阻均为1/8W。金属…

“对不起,我们只招父母毕业于名牌院校的孩子”:最可怕的,是你还以为学历不重要...

全世界只有3.14 % 的人关注了爆炸吧知识1 近日,有一条新闻引发网友热议。成都某小学入学面试,要求家长除了带照片和身份证件之外,还要带“父母学历证书原件及复印件”。网上有种说法,该小学筛选的标准是父母毕业于211院校。后来眼…

.NET 6 对 StackOverflow 的优化

.NET 6 对 StackOverflow 的优化Intro去年写了一系列的傻逼代码, 其中有一篇 写了多年代码,你会 StackOverflow 吗,昨天一不小心又写了一个 StackOverflow 代码。。然后想把新的代码加到原来 StackOverflow 的示例中,把原来的示例项目改成了 …

Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式

从网络上获取图片是一个比较耗时的操作,放在主线程会导致阻塞主线程,响应超时,所以我们不能把它放在主线程里操作,必须放在一个子线程里,我打算采用两种方式去实现。1、采用thread去获取图片,获取到后通过handle把消息发送到与主线程绑定的消息队列中(也就是主线程的loo…

推荐16款非常有创意的婚礼请贴

为什么80%的码农都做不了架构师?>>> 日期:2012-4-5 来源:GBin1.com 婚约是标志着你和你的伴侣很快就要有新的开始了,一起开始那段新的历程!婚礼是整个人生旅途中的一个重要里程碑,在婚礼的邀请…

三年磨一剑,五次被拒稿,交大博士坚持稿件申诉,终发表学科顶刊

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:募格学术三年磨一剑,经历五轮审稿被拒,他坚持不懈,最终申诉成功发表物理顶刊;厚积薄发、精益求精,他潜心科研,2年内发表6篇高水平论文&#xff…

Java内部类详解(转)

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲&…

.NET Conf 2021 正在进行中,带你看一看微软带来了什么内容

今年最大的.NET活动正在进行, 可以通过Channel9 https://channel9.msdn.com/Events/dotnetConf/2021 看具体的Session 。微软和社区一直在努力统一.NET技术栈。从Visual Studio 到 SQL 和 Azure ,所有功能聚集一堂,让您在桌面、网络、移动和跨平台开发梦…

C# js调用winform方法,C# JS与winform通信

关键组件:System.windows.Forms.WebBroswer 关键声明:类前声明 namespace gdi___ {[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name "FullTrust")][System.Runtime.InteropServices.ComVisibleAtt…

下班忘打卡了什么后果_工厂园区安装人脸识别门禁系统有什么好处?

通常情况下,工厂园区的人员流动都是比较频繁且巨大的。厂区的人员不断的进进出出,主要集中在上下班的时间段里面。对于工厂园区的管理人员来说,怎样管理好人员的进出安全与快捷高效通行,与此同时完成上下班的考勤尤其重要。当前的…