当前位置: 首页 > 编程日记 > 正文

NSUserDefaults的用法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];  
NSLog(@"Defaults: %@", defaults);

是用来获取设备上的所有的NSUserDefaults的设置。

上面代码输出了

2013-06-26 12:41:09.948 MyText[5180:c07] Defaults: {  AppleITunesStoreItemKinds =     (  wemix,  podcast,  document,  "software-update",  newsstand,  "tv-episode",  "tv-season",  software,  audiobook,  movie,  song,  album,  tone,  booklet,  ringtone,  artist,  "podcast-episode",  "itunes-u",  mix,  eBook  );  AppleLanguages =     (  en,  "zh-Hans",  "zh-Hant",  fr,  de,  ja,  nl,  it,  es,  pt,  "pt-PT",  da,  fi,  nb,  sv,  ko,  ru,  pl,  tr,  uk,  ar,  hr,  cs,  el,  he,  ro,  sk,  th,  id,  ms,  "en-GB",  ca,  hu,  vi  );  AppleLocale = "en_US";  NSInterfaceStyle = macintosh;  NSLanguages =     (  en,  "zh-Hans",  "zh-Hant",  fr,  de,  ja,  nl,  it,  es,  pt,  "pt-PT",  da,  fi,  nb,  sv,  ko,  ru,  pl,  tr,  uk,  ar,  hr,  cs,  el,  he,  ro,  sk,  th,  id,  ms,  "en-GB",  ca,  hu,  vi  );  
}

如果想单独看某个key的设置,例如:

NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"];  
NSLog(@"Keyboards: %@", array);

会输出

AppleKeyboards =     (  "zh_Hans-Pinyin@sw=Pinyin;hw=US",  "en_US@hw=US;sw=QWERTY"  
);

用法:

//保存数据到NSUserDefaults    
-(void)saveNSUserDefaults    
{    NSString *myString = @"enuola";    int myInteger = 100;    float myFloat = 50.0f;    double myDouble = 20.0;    NSDate *myDate = [NSDate date];    NSArray *myArray = [NSArray arrayWithObjects:@"hello", @"world", nil];    NSDictionary *myDictionary = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"enuo", @"20", nil] forKeys:[NSArray arrayWithObjects:@"name", @"age", nil]];    //将上述数据全部存储到NSUserDefaults中    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];    //存储时,除NSNumber类型使用对应的类型意外,其他的都是使用setObject:forKey:    [userDefaults setInteger:myInteger forKey:@"myInteger"];    [userDefaults setFloat:myFloat forKey:@"myFloat"];    [userDefaults setDouble:myDouble forKey:@"myDouble"];    [userDefaults setObject:myString forKey:@"myString"];    [userDefaults setObject:myDate forKey:@"myDate"];    [userDefaults setObject:myArray forKey:@"myArray"];    [userDefaults setObject:myDictionary forKey:@"myDictionary"];    //这里建议同步存储到磁盘中,但是不是必须的    [userDefaults synchronize];    }    //从NSUserDefaults中读取数据    
-(void)readNSUserDefaults    
{    NSUserDefaults *userDefaultes = [NSUserDefaults standardUserDefaults];    //读取数据到各个label中    //读取整型int类型的数据    NSInteger myInteger = [userDefaultes integerForKey:@"myInteger"];    txtInteger.text = [NSString stringWithFormat:@"%d",myInteger];    //读取浮点型float类型的数据    float myFloat = [userDefaultes floatForKey:@"myFloat"];    txtFloat.text = [NSString stringWithFormat:@"%f",myFloat];    //读取double类型的数据    double myDouble = [userDefaultes doubleForKey:@"myDouble"];    txtDouble.text = [NSString stringWithFormat:@"%f",myDouble];    //读取NSString类型的数据    NSString *myString = [userDefaultes stringForKey:@"myString"];    txtNSString.text = myString;    //读取NSDate日期类型的数据    NSDate *myDate = [userDefaultes valueForKey:@"myDate"];    NSDateFormatter *df = [[NSDateFormatter alloc] init];    [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    txtNSDate.text = [NSString stringWithFormat:@"%@",[df stringFromDate:myDate]];    //读取数组NSArray类型的数据    NSArray *myArray = [userDefaultes arrayForKey:@"myArray"];    NSString *myArrayString = [[NSString alloc] init];    for(NSString *str in myArray)    {    NSLog(@"str= %@",str);    myArrayString = [NSString stringWithFormat:@"%@  %@", myArrayString, str];    [myArrayString stringByAppendingString:str];    
//        [myArrayString stringByAppendingFormat:@"%@",str];    NSLog(@"myArrayString=%@",myArrayString);    }    txtNSArray.text = myArrayString;    //读取字典类型NSDictionary类型的数据    NSDictionary *myDictionary = [userDefaultes dictionaryForKey:@"myDictionary"];    NSString *myDicString = [NSString stringWithFormat:@"name:%@, age:%d",[myDictionary valueForKey:@"name"], [[myDictionary valueForKey:@"age"] integerValue]];    txtNSDictionary.text = myDicString;    
}



用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?

其实它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。

比如说这个是你的程序沙盒位置
/UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。


这个plist文件在NsUserDefaults使用之前是没有的。


CCUserDefault和NSUserDefaults差不多,地址是:

std::string dir = CCUserDefault::sharedUserDefault()->getXMLFilePath();  CCLOG("dir:%s",dir.c_str());

  1. dir:/Users/liulijun/Library/Application Support/iPhone Simulator/6.1/Applications/5135A000-024F-468E-99F0-F75FABC1392A/Library/Caches/UserDefault.xml  

  2. 方法:

/** 
@brief Set bool value by key. 
*/  
void    setBoolForKey(const char* pKey, bool value);  
/** 
@brief Set integer value by key. 
*/  
void    setIntegerForKey(const char* pKey, int value);  
/** 
@brief Set float value by key. 
*/  
void    setFloatForKey(const char* pKey, float value);  
/** 
@brief Set double value by key. 
*/  
void    setDoubleForKey(const char* pKey, double value);  
/** 
@brief Set string value by key. 
*/  
void    setStringForKey(const char* pKey, const std::string & value);  
/** @brief Save content to xml file */  
void    flush();

ps:

NSUserDefaults读取和写入自定义对象
http://blog.csdn.net/chyroger/article/details/5785297


转载于:https://my.oschina.net/u/2562364/blog/669223

相关文章:

计算机在轻工行业中的应用,计算机在不同领域中的具体应用

计算机以其卓越的性能和强大的生命力,在科学技术、国民经济、社会生活等各个方面得到了广泛的应用,并且取得了明显的社会效益和经济效益。计算机的应用几乎包括人类生活的一切领域,可以说是包罗万象,不胜枚举。据统计,…

自动驾驶L3量产追梦:如何跨过车规级和低成本门槛?

雷锋网新智驾按:从人类设想到落地前行,智能驾驶领域在2018年声响不断。在频繁的融资、技术创新和商业应用等信息背后,无数车企在公司战略中加入“网联化”、“自动化”,前几年涌现的自动驾驶领域的初创公司,近年来也开…

一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了。所以今天在这里用最简短的语言让你明白这些区别。 看这种图表就一切…

awstats CGI模式下动态生成页面缓慢的改进

本文可以看做是 多server多站点情况下awstats日志分析 这篇文章的下篇,在使用过程中发现awstats在cgi模式下动态生成分析报告慢的问题 (尤其是有些站点每天两个多G的日志,查看起来简直是在考验人的耐性),本文分享一种改…

计算机水平flash试题,计算机flash考试试题

《Flash动画设计》课程考核方案一、考试班级及科目216班 《Flash动画设计》二、考试时间1、考核时间:90分钟2、考试地点:学校计算机3机房3、考核时期:十七、十八周内各课任教师自主选定三、考核形式上机独立完成所有操作。在规定时间内按考核…

CDH大数据集群安全风险汇总

一,风险分为内部和外部 首先内部: CDH大数据集群部署过程中会自动创建以服务命名的用户,如图所示 用户名(login_name):口令位置(passwd):用户标识号(UID):用户组标识号(GID):注释性描述(users)&…

有界阻塞队列ArrayBlockingQueue和无界阻塞队列LinkedBlockingQueue

ArrayBlockingQueue和LinkedBlockingQueue最大的区别是一个是有界无界,各有优劣。 先看实例代码: main函数起2个线程模拟生成消费者 import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.…

zabbix监控windows 服务器各项性能

Zabbix agent 在windows上安装部署1、 下载与解压地址: http://www.zabbix.com/downloads/2.4.0/zabbix_agents_2.4.0.win.zip解压zabbix_agents_2.4.0.win.zipconf目录存放是agent配置文件 bin文件存放windows下32位和64位安装程序2、 配置与安装2.1 配置zabbix agent相关配…

计算机设备板块超跌,半导体全线拉升,沪指强势突破3600点,午后A股会再次冲高回落吗...

周四开盘沪指开于3585点,和周三收盘价低开了8个点。上午开盘后沪指呈现低开高走的趋势,10点以后沪指持续拉升上涨不但顺利地突破了3600点而且还创了反弹新高。除了沪指以外深市三大股指也是全线翻红,上午A股的三大股指再次全线拉升并且均创了…

docker之基础

一、Docker简介 容器:运行在同一类用户空间上的程序打包在一起,相当于一个集装箱 Docker:码头装运工;把集装箱搬运到该有的位置。 Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC&…

Java一个线程能否结束另一个永不停止的线程

在Java中停止一个线程有三种办法 : 1.正常结束执行; 2.发生异常; 3.被其他线程stop(Java官方不建议) 参考:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html 为什么Thread.stop弃用…

pxe cobbler ipmi bmc

http://blog.csdn.net/xuensong520/article/details/8922926 http://blog.csdn.net/xuensong520/article/details/8915945 http://www.wenzizone.cn/?p408 #执行外部脚本(后置脚本)vi /var/www/cobbler/ks_mirror/config/autoip.sh #创建脚本,自动设置Linux系统静…

广东电大计算机绘图试题,电大计算机绘图期末复习试题及答案参考小抄.doc

电大计算机绘图期末复习试题及答案参考小抄一、填空题(每小题1.5分,共30分)1.CAD的常用图形输入设备有???鼠标??、数字化仪、图形输入板、光笔、??键盘 等。2.CAD的软件可分为系统软件、支撑软件和???应用软件??? 软件三个层次。…

django07 字符串替换

1. 模板语言(字符串替换) 1. 母版和继承 1. 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件。 (比如:导航条和左侧菜单) 2. 子页面如何使用母版? {% e…

【云和恩墨】一次 truncate 核心表衍生的安全管理思考

第一章 一次 truncate 核心表衍生的安全管理思考 云和恩墨 | 2016-05-06 17:56 本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享。安全问题涉及到信息系统的方方面面,尤其是其核心资产——数据的安全。无论是数据访问控制的裸露&#xff0…

合理估算线程池线程数量

参考《Java并发编程实战》 线程数量计算公式 公式:Nthread Ncpu * Ucpu * (1 W/C),各字段含义: Nthreads:线程数量 Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors()…

通过regedt查看计算机密码,win10系统通过注册表设置定时更换密码提醒的处理步骤...

有关win10系统通过注册表设置定时更换密码提醒的操作方法想必大家有所耳闻。但是能够对win10系统通过注册表设置定时更换密码提醒进行实际操作的人却不多。其实解决win10系统通过注册表设置定时更换密码提醒的问题也不是难事,小编这里提示两点: 1、首先在…

苏宁零售云 App 稳定保障实践

1. 背景 苏宁零售云目标T4-T6级市场的业务,定位更靠谱的智慧零售解决方案和零售服务集成商,实战式跨界赋能。苏宁易购TO C的经验丰富,相关的方案很完善,但是零售云TO B相关业务启动后,业务增长迅速,App相关…

小酌重构系列[8]——提取接口

前言 世间唯一“不变”的是“变化”本身,这句话同样适用于软件设计和开发。在软件系统中,模块(类、方法)应该依赖于抽象,而不应该依赖于实现。 当需求发生“变化”时,如果模块(类、方法&#xf…

多线程并发编程需要注意虚假唤醒Spurious wakeup

虚假唤醒 Spurious wakeup 如果等待线程在没有通知被调用的情况下唤醒,则称为Spurious wakeup。 解决方案就是: 使用while条件判断,更好的方案是避免使用wait这种低级的API,而是使用高级的并发工具。 因为这些高级的并发工具都是经过无数…

高中计算机个人总结怎么写,毕业生自我总结范文

毕业生自我总结范文1时光飞逝,三年忙碌而充实的大学生活在一片有序的繁忙中将要过去了,回首过去三年,内心感慨万千。我是20xx年春参加电大机械班的学习,回顾这三年的电大学习之路,饱含了汗水和收获。总结是一面镜子&am…

python - 字符串的格式化输出

# -*- coding:utf-8 -*-project: jiaxyauthor: Jimmyfile: study_2_str.pyide: PyCharm Community Editiontime: 2018-11-01 15:12blog: https://www.cnblogs.com/gotesting/# 字符串s #空字符串# 1:字符串拼接# 1.1:字符串与字符串的拼接用 连接s_1 hellos_2 worlds_3 5…

一个冷僻的知识点try直接返回finally里的设置null其实无效

先看引用类型的代码&#xff1a; import java.util.HashMap; import java.util.Map;public class trycatchefinally {public static void main(String[] args) {System.out.println(getMap().get("KEY"));}public static Map<String, String> getMap() {Map&l…

​身份证工具类

2019独角兽企业重金招聘Python工程师标准>>> 身份证工具类 package com.pqs.common.tools;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util…

目前常用的服务器端网络操作系统有,目前常用的服务器端网络操作系统是()。...

在一台IP地址为192.168.1.1的Windows Server 2008 R2计算机上安装活动目录&#xff0c;建立一个森林根域test.com&#xff0c;保留默认的域功能级别&#xff0c;同时使该计算机成为域test.com的首台域控制器并承担着DNS服务器和全局编录服务器的角色。  操作步骤&#xff…

如何处理用代码创建SD Sales order时遇到的错误消息KI 180

2019独角兽企业重金招聘Python工程师标准>>> 错误消息KI 180:You must enter a company code for transaction Create sales document 代码: REPORT zcreate_so.DATA: ls_header TYPE bapisdhd1,ls_headerx TYPE bapisdhd1x,lt_bapiret2 LIKE bapiret2 OCCURS …

Flink 基本原理与生产实践分享【入门必读,概念清晰】

Flink 基本原理与生产实践分享【入门必读&#xff0c;概念清晰】 https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会开发的开源流处理框架&#xff0c;其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流…

数据库模型设计——主键的设计

在数据库设计时&#xff0c;主要就是对实体和关系的设计&#xff0c;实体表现出来就是表&#xff0c;关系表现出来就是外键。而对于一个表&#xff0c;由两部分组成&#xff1a;主键和属性。主键的简单定义就是表中为每一行数据的唯一标识。其实更准确的说法&#xff0c;每一行…

jsp ajax动态添加数据,jquery Ajax实现Select动态添加数据

jquery Ajax实现Select动态添加数据&#xff0c;具体内容如下1.背景最近在工作中&#xff0c;遇到了一个关于select的问题。一般情况下&#xff0c;select下拉框中的数据都是固定的或者直接在jsp中读取列表值显示。但是&#xff0c;这次要实现select与别的选项框联动&#xff0…

Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

2019独角兽企业重金招聘Python工程师标准>>> 一、简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API&#xff0c;Redis也是技术领域使用最为广泛的存储中间件&#xff0c;它是「…