【IOS】ios中NSUserDefault与android中的SharedPreference用法简单对比

以下内容为原创,欢迎转载,转载请注明

来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3405308.html

有Android开发经验的朋友对SharedPreference的用法应该比较亲切的吧,它一般用来保存和读取用户的设置参数,比如保存用户名、加密后的登录密码,是否选择了自动登录,应用选择了哪一套主题皮肤等用户配置信息,使用也非常简单,put/get就能保存/读取这个配置文件,这个文件是用xml形式保存在应用的目录下面

在ios中,也有这么一个类似的工具——NSUserDefault,它支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。它是存储在/Library/Prefereces里面,有个plist文件。

下面,我们写一个demo来测试下:

界面很简单,两个button,一个label

点击第一个button用来保存数据,点击第二个button用来显示数据到label

代码如下:

 1 - (IBAction)buttonClicked:(id)sender {
 2     switch ([sender tag]) {
 3         case 1: // 保存数据
 4             [self saveData];
 5             break;
 6         case 2: // 显示数据
 7             [self showData];
 8             break;
 9
10         default:
11             break;
12     }
13 }
14
15
16 - (void)saveData
17 {
18     NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
19
20     [userDef setObject:@"wangjie" forKey:@"name"];
21     [userDef setInteger:23 forKey:@"age"];
22     [userDef setBool:YES forKey:@"isAutoLogin"];
23     [userDef setDouble:115.0 forKey:@"weight"];
24     [userDef setFloat:171.2 forKey:@"height"];
25
26     [userDef synchronize];
27     NSLog(@"save success!");
28 }
29
30 - (void)showData
31 {
32     NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
33     NSString *content = [NSString stringWithFormat:@"name: %@; age: %d; isAutoLogin: %hhd; weight: %f; height: %f",
34                          [userDef stringForKey:@"name"],
35                          [userDef integerForKey:@"age"],
36                          [userDef boolForKey:@"isAutoLogin"],
37                          [userDef doubleForKey:@"weight"],
38                          [userDef floatForKey:@"height"]
39                          ];
40
41     [[self showLb] setText:content];
42     NSLog(@"%@", [[self showLb] text]);
43 }

一:启动应用程序后直接点击第二个button,因为数据之前没有被保存,所以显示的数据都是默认的数据:

二:点击第一个button(数据会被插入),再点击第二个button(已有数据可以显示),此时情况如下:

 

时间: 2024-09-20 05:30:30

【IOS】ios中NSUserDefault与android中的SharedPreference用法简单对比的相关文章

Android网络数据开关用法简单示例_Android

本文实例讲述了Android网络数据开关用法.分享给大家供大家参考,具体如下: api中没有开放这部分接口.因此大家可以使用这个方法,true时打开,false关闭.目前对G网手机可以. public boolean setMobileDataEnabled(boolean enabled) { final TelephonyManager mTelManager; mTelManager = (TelephonyManager) getSystemService(Context.TELEPHO

Android网络数据开关用法简单示例

本文实例讲述了Android网络数据开关用法.分享给大家供大家参考,具体如下: api中没有开放这部分接口.因此大家可以使用这个方法,true时打开,false关闭.目前对G网手机可以. public boolean setMobileDataEnabled(boolean enabled) { final TelephonyManager mTelManager; mTelManager = (TelephonyManager) getSystemService(Context.TELEPHO

Android中selector设置

问题描述 Android中selector设置 android中怎么在mainactivity中动态设置textview 字体颜色的selector 解决方案 android 设置selector无效android selector下的设置背景属性值android selector下的设置背景属性值 解决方案二: 做不同的xml文件,动态设置backgroundresourceid

接口-android中的xml里实现onClick=“clickButton” 在java中……

问题描述 android中的xml里实现onClick="clickButton" 在java中-- 1.对Android中的xml实现onClick有点疑问,实现的原理是怎样的? 2.java中实现是这样的: view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 3.xml结合java的实现样式比较好看,可是他没有实现OnClickListener的接

android中Intent传值与Bundle传值的区别详解_Android

举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 不就更简洁吗? 另外一个例子如果我现在有Activity A ,B ,C:现在我要把值通过A经过B传给C你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 累吗?如果我在A中用了 Bundle 的话  我把Bun

简介Android 中的AsyncTask_Android

AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合.其实AsyncTask并不是那么好,甚至有些糟糕.本文我会讲AsyncTask会引起哪些问题,如何修复这些问题,并且关于AsyncTask的一些替代方案. AsyncTask 从Android API 3(1.5 Cupcake)开始,AsyncTask被引入用来帮助开发者更简单地管理线程.实际上在Android 1.0和1.1也是有类似的实现,那就是UserTask.UserTask和AsyncTask有着相

【android基础】Android中四大组件

有些时候老是觉得自己有些浮躁,学习东西的时候总是太过于表面,只顾花哨的上层展示,难得去了解更别说深入的学习更下层的东西.回过头来看看,下层的东西搞明白之后再弄上层的会感觉豁然开朗.(当然刚刚入门的时候是可以从上层开始,这样有助于提高兴趣)不过还是应该对稍微底层一些的东西进行系统的学习和深入 Android系统的架构 android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.1.应

android中Intent传值与Bundle传值的区别详解

举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 不就更简洁吗? 另外一个例子如果我现在有Activity A ,B ,C:现在我要把值通过A经过B传给C你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 累吗?如果我在A中用了 Bundle 的话  我把Bun

Android中实现iOS中的毛玻璃效果

为了实现毛玻璃效果,我们需要一组compute kernels(.rs文件中编写),及一组用于控制renderScript相关的Javaapi(.rs文件自动生成为Java类). 由于compute kernels的编写需要一定的学习成本,从JELLY_BEAN_MR1开始,Androied内置了一些compute kernels用于常用的操作,其中就包括了Gaussian blur. 下面,通过实操来讲解一下RenderScript来实现高斯模糊,最终实现效果(讲文字背景进行模糊处理): 实现