【OC学习-30】NSUserDefaults把数据存储在本地的一种方式

我们先创建一个NSUserDefaults对象(其实类似于一个字典),然后把数据写入到这个对象中,然后把这个对象里面的数据保存在本地。然后我们把这些代码删除掉,重新创建一个对象来调用在本地的数据,看是否能调出,如果能,说明之前已经成功把数据本地化了。

(1)我们创建一个空的application。

(2)把AppDelegate.m下面的那些函数都删除掉。在第一个函数里面补充如下代码,然后点击运行。

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    //以下是新添加的代码
    NSArray *[email protected][@"111",@"222"];
    NSUserDefaults *userDef=[NSUserDefaults standardUserDefaults];//这个对象其实类似字典,着也是一个单例的例子
    [userDef setObject:arr1 forKey:@"array"];
    [userDef setInteger:123 forKey:@"number"];
    [userDef synchronize];//把数据同步到本地

   return YES;
}

@end

(3)把上面代码删除,然后添加如下代码,点击运行。

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    //以下是新增代码
    //看数据是否已经在本地,即注销上述语句,在本地调用数据
    NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
    NSInteger *num1=[userDefault integerForKey:@"number"];
    NSArray *arr2=[userDefault objectForKey:@"array"];
    NSLog(@"%d,%@",num1,arr2);
    return YES;
}
@end

(4)运行结果:

123,(
    111,
    222
)

我们把第一次添加的代码已经删除后,第二次代码运行时还能调出数据,说明数据已经存储在本地了。

(5)其实这个数据应该保存在一个.plist为后缀的文件中,可惜没找到这个文件,或者是找到了,但是没看到数据,亦可能是已经保存了源文件了,可能就没必要单独创建个新文件保存了,这个做项目的时候以后再慢慢找。

时间: 2024-11-20 14:15:39

【OC学习-30】NSUserDefaults把数据存储在本地的一种方式的相关文章

android 数据存储之SharePreference 的几种方式

1. 常见的 getSharedPreferences(String filename,mode) 指定sp文件的名称,生成的文件名为 filename.xml 2.getPreferences(mode) getPreferences只有一个参数,不能指定文件名,文件名固定为 当前Activity的名字,不包含包名. 3.PreferenceManager.getDefaultSharedPreferences(Context) 该SharedPreferences MODE默认为MODE_P

iOS 学习笔记——0005(数据存储)

先发一个练手的小demo,自己写的简略通讯录,已上传至github https://github.com/liaoshaolim/addressBook 1.NSKeyedArchiver:(归档) 这里用一个添加联系人的例子来说明: 注意:归档形式保存数据,需要该对象遵守NSCoding协议,而且对应的必须提供encodeWithCoder和initWithCoder方法 因为归档是一次性的,解压也是一次性的,所以小量的ok,如果量大的话,改一个小地方就要归档或解压全部,效率会比较低 //用一

Android学习之简单的数据存储

在Android中,数据存储是开发人员不可以避免的.Android为开发者提供了很多的存储方法,在前面的博客中,已经讲述了sqlite存储数据.今天将介绍用SharedPreferences来存储数据,它可以将数据保存在应用软件的私有存储区,存储区的数据只能被写入这些数据的软件读取.SharedPreference通过键值对的方法存储数据. 1.SharedPreference存储简单数据 SharedPreference可以存放简单的String.Boolean.Int等对象. 1 <Rela

python中如何把数据存储到本地

有很多时候,我们会在python的运行过程中得到一些重要的变量,比如一个数据量很庞大的dict.而且,后面的某些程序也会用到这个dict,那么我们就最好把它存储到本地来,然后下次调用的时候,先读取本地的文件,导入到字典类型中,调用即可.这样就免去了重新学习这个字典的过程.那么在python中如何把数据存储到本地呢?我们用到的是python中的pickle模块.  如下:import pickleda... http://wd.tgnet.com/QuestionDetail/2015041044

Http Get 从服务器中获取数据 存储到本地

package com.http.get; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.apache.http.message.BasicNameValu

Docker mysql 把数据存储在本地目录

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! Docker mysql 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql 还可以指定配置文件

java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:

总结:实现Runnable接口比继承Thread类更有优势: 1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性 2.继承Thread类,多个线程不能处理或者共享同一个资源,但是实现Runnable接口可以处理同一个资源. 下面我们做个测试:验证下.车站的售票系统售票的例子,车站的各个售票口相当于各个线程,我们先使用第一种方法几继承Thread类的方式实现: 代码如下: package com.lp.ecjtu.Thread; /** * * @author Admini

NSUserDefaults(数据存储)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber(Integer.Float

IOS学习笔记 -- Segue、数据存储、UITabBarController

一. Segue1.Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)每一个Segue对象,都有3个属性1>.唯一标识: @property (nonatomic, readonly) NSString *identifier;2>.来源控制器: @property (nonatomic, readonly) id sourceViewController;3>.目标控制器: @property (nonatomic, read