【技术】 NSUserDefaults的使用

用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置。

该数据实际上是以“键值对”形式保存的(类似于NSDictionary),因此我们需要通过key来读取或者保存数据(value)。

具体使用如下:

1、获取一个NSUserDefaults引用:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

2、保存数据

[userDefaults setInteger:1 forKey:@"segment"];

[userDefaults synchronize];

3、读取数据

int i = [userDefaults integerForKey:@"segment"];

4、其他数据的存取

The NSUserDefaults class provides convenience methods for accessing
common types such as floats, doubles, integers, Booleans, and URLs. A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData,NSStringNSNumberNSDateNSArray,
or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData.

保存数据:

NSData *objColor = [NSKeyedArchiver archivedDataWithRootObject:[UIColor redColor]];

[[NSUserDefaults standardUserDefaults]setObject:objColor forKey:@"myColor"];

读取数据:

NSData *objColor = [[NSUserDefaults standardUserDefaults]objectForKey:@"myColor"];

UIColor *myColor =
[NSKeyedUnarchiver unarchiveObjectWithData:objColor];

5、应用实例

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

......

[cellSwitch setTag:indexPath.row];

[cellSwitch addTarget:self action:@selector(SwitchAction:) forControlEvents:UIControlEventValueChanged];

//retrieving cell switch value

NSUserDefaults *switchV = [NSUserDefaults standardUserDefaults];

int i= indexPath.row;

NSString *str
= [[NSString alloc]initWithFormat:@"switch%d",i];

cellSwitch.on = ([switchV integerForKey:str]==1)?YES:NO;

......

return cell;

}

-(void)SwitchAction:(id)sender

{

int i= [sender tag];

NSString *str
= [[NSString alloc]initWithFormat:@"switch%d",i];

// save cell switch value

NSUserDefaults *switchV = [NSUserDefaults standardUserDefaults];

isOnOff = ([sender isOn]
== 1)?1:0;

[switchV setInteger:isOnOff forKey:str];

[switchV synchronize]; //调用synchronize函数将立即更新这些默认值。

[str release];

}

时间: 2024-08-10 15:10:50

【技术】 NSUserDefaults的使用的相关文章

iOS开发——使用技术OC篇&项目实战总结之开发技巧

项目实战总结之开发技巧 本文收集了25个关于可以提升程序性能的提示和技巧 1.使用ARC进行内存管理 2.在适当的情况下使用reuseIdentifier 3.尽可能将View设置为不透明(Opaque) 4.避免臃肿的XIBs 5.不要阻塞主线程 6.让图片的大小跟UIImageView一样 7.选择正确的集合 8.使用GZIP压缩 9.重用和延迟加载View 10.缓存.缓存.缓存 11.考虑绘制 12.处理内存警告 13.重用花销很大的对象 14.使用Sprite Sheets 15.避免

iOS开发——装逼技术精选&关于反编译和防止反编译

关于反编译和防止反编译 反编译 内购破解 iOS应用需防反编译风险之一:插件法(仅越狱).iTools工具替换文件法(常见为存档破解).八门神器修改 网络安全风险 iOS应用需防反编译风险之二:截获网络请求,破解通信协议并模拟客户端登录,伪造用户行为,对用户数据造成危害 应用程序函数PATCH破解 iOS应用需防反编译风险之三:利用FLEX 补丁软件通过派遣返回值来对应用进行patch破解 源代码安全风险 iOS应用需防反编译风险之四:通过使用ida等反汇编工具对ipa进行逆向汇编代码,导致核心

iOS 必备技术点

IOS面试问题总结 分类: IOS开发2013-11-20 17:26 5873人阅读 评论(1) 收藏 举报 目录(?)[+] 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事

iOS开发数据持久化技术01——NSUserDefault介绍

有疑问的请加qq交流群:390438081 我的QQ:604886384(注明来意) 微信:niuting823 首先说下什么是数据持久化技术 NSString *str = @"hello world"; ->内存 实际上就是将数据存储到硬盘上,针对于iOS应用程序是存储到沙盒中. . NSUserDefault介绍 1 是系统提供的自定义的类,可以随时在需要使用的地方声明对象,并随时需要的时候取出对象 2 支持的对象类型:NSString, NSNumber, NSData,

静态网页开发技术-HTML

今天我重新复习了一下静态网页开发技术,概括如下. 一 .HTML文档结构与基本语法 :放置了标签的文本文档,可供浏览器解释执行的网页文件 1.注释标记 2.标记 3.属性 二.基本标记与使用 1.网页基本结构与标记 2.文本与段落标记 3.列表标签 4.超链接标签 5.图片标记 6.定时刷新或跳转 7.表格 三 HTML表单标签与表单设计 1.<FORM>标记及其属性 2  <INPUT>标记及其属性 3 <下拉列表框<SELECT>,<OPTION>

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

Java技术的特点

Java技术是一套完整的IT行业解决方案,其中包含了很多技术.最初是从解决家电设备联网通讯的方案发展起来的,其特点适用于Internet,于是在Internet广泛应用的环境下,迅速发展成为一种计算机语言.一个平台.一个网络计算的架构. 从整体上划分,Java技术可分成Java编程语言和Java平台.Java编程语言是一种高级编程语言,Java平台是指程序运行的硬件或软件环境. Java编程语言的特征: 1.简单易用 2.面向对象 3.跨平台,可移植 4.多线程 5.健壮性 6.安全性 7.动态

谈谈-Android中的接口回调技术

Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James对Android接口回调技术的理解(结合前人的知识和自己的实践). 使用一个比喻很形象地说明:客户端有个疑问打电话请教服务端,但服务端无法现场给出解答,相互之间约定:服务端一旦有答案,使用电话的方式反馈给客户端. 以上有三个主体:客户端.服务端和接口(方式). 接口回调的原理框图说明: Demo界面

一张图掌握移动Web前端所有技术(大前端、工程化、预编译、自动化)

你要的移动web前端都在这里! 大前端方向:移动Web前端.Native客户端.Node.js. 大前端框架:React.Vue.js.Koa 跨终端技术:HTML 5.CSS 3.JavaScript 跨平台框架:React Native.Cordova 前端工程化:Grunt.Gulp.Webpack 前端预编译:Babel.Sass.Less 自动化测试:Jasmine.Mocha.Karma 一图在手,应有尽有! 更多信息参考:https://item.jd.com/12170351.h