userDefaults

//
//  RootViewController.m

#import "RootViewController.h"

@interface RootViewController ()
{
    NSMutableArray * dataSource;
}
@end

@implementation RootViewController

-(void)createUI
{
    NSArray * arr = @[@"NSNumber数据:",@"integer:",@"float:",@"double:",@"NSString数据:",@"NSDate数据:",@"NSArray数据:",@"NSDictionary数据:"];
    for(int i = 0;i<[arr count];i++)
    {
        UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 70 + 40 * i, 140, 30)];
        label.text = arr[i];
        label.textAlignment = NSTextAlignmentRight;
        [self.view addSubview:label];
        [label release];
    }
    for(int i = 1;i<[arr count];i++)
    {
        UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(145, 70 + 40 * i, 170, 30)];
        label.tag = i;
        label.textAlignment = NSTextAlignmentLeft;
        label.backgroundColor = [UIColor cyanColor];
        [self.view addSubview:label];
        [label release];
    }
}
//向userDefaults里面写入数据
-(void)writeUserDefaults
{
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    NSInteger i = 100;
    float f = 50.0f;
    double d = 1000.0;
    NSString * string = @"字符串";
    NSArray * arr = @[@"hello",@"world"];
    NSDictionary * dic = @{@"name":@"test",@"age":@"19"};
    NSDate * date = [NSDate date];
    //存入的数据 无论是可变的还是不可变的 读出来以后都是不可变的数据

    [defaults setInteger:i forKey:@"int"];
    [defaults setFloat:f forKey:@"float"];
    [defaults setDouble:d forKey:@"double"];
    //基本类型的数据存放在userDefaults以后都会自动转化成NSNumber
    [defaults setObject:string forKey:@"string"];
    [defaults setObject:arr forKey:@"array"];
    [defaults setObject:dic forKey:@"dic"];
    [defaults setObject:date forKey:@"date"];
    //写入磁盘
    [defaults synchronize];
}
//读数据
-(void)readUserDefaults
{
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    dataSource = [[NSMutableArray alloc]init];
    NSString * intStr = [NSString stringWithFormat:@"%@",[defaults objectForKey:@"int"]];
    NSString * floatStr = [NSString stringWithFormat:@"%f",[defaults floatForKey:@"float"]];
    NSString * doubleStr = [NSString stringWithFormat:@"%lf",[defaults doubleForKey:@"double"]];
    NSString * stringStr = [defaults objectForKey:@"string"];

    NSArray * arr = [defaults objectForKey:@"array"];
    NSString * arrStr = [arr componentsJoinedByString:@" "];

    NSDictionary * dic = [defaults objectForKey:@"dic"];
    NSString * dicStr = [NSString stringWithFormat:@"name:%@,age:%@",[dic objectForKey:@"name"],[dic objectForKey:@"age"]];

    NSDate * date = [defaults objectForKey:@"date"];
    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString * dateStr = [formatter stringFromDate:date];
    [formatter release];

    [dataSource addObject:intStr];
    [dataSource addObject:floatStr];
    [dataSource addObject:doubleStr];
    [dataSource addObject:stringStr];
    [dataSource addObject:dateStr];
    [dataSource addObject:arrStr];
    [dataSource addObject:dicStr];

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationItem.title = @"UserDefualts的用法";
    self.view.backgroundColor = [UIColor brownColor];
    UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressBarBtn:)];
    self.navigationItem.rightBarButtonItem = item;
    [item release];
    [self createUI];

    [self writeUserDefaults];
    [self readUserDefaults];

}
-(void)pressBarBtn:(id)sender
{
    //查找沙盒目录的路径
    NSArray * arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * path = [arr objectAtIndex:0];
    NSLog(@"%@",path);

    for(int i = 0;i<[dataSource count];i++)
    {
        UILabel * lable = (UILabel *)[self.view viewWithTag:i + 1];
        lable.text = dataSource[i];
    }
}

@end
时间: 2024-10-23 00:52:24

userDefaults的相关文章

Swift: 用UserDefaults保存复杂对象

一直木有看过这个细节,用UserDefaults是能不能存复杂一点的对象.大家可能都看到过UserDefaults的一个方法setObject: forKey:,用这个方法存过NSDictionary,NSArray什么的,也存过字符串. 偶然一次直接存了一个继承自JSONModel的实体类,然后就悲剧了.后来查了下苹果的文档: The value parameter can be only property list objects: NSData, NSString,  NSNumber, 

[MAC OS ] UserDefaults

reference to : http://www.jianshu.com/p/d59b004b5ea7 1.用UserDefaults存储配置信息 注:本次使用UserDefaults存储信息是在不考虑安全问题的前提下.分两种情况:1.如果是密码用户名等敏感信息,请使用Keychain存储用户敏感信息,我将在后面写一篇用Keychain存储用户敏感信息2.如果是设置 记住密码.第一次打开应用引导App,或者一般APP的设置,那么,可使用UserDefaults 一般情况下使用方法,最常见的有两

IOS中UserDefaults的用法(储存和调用设置信息)

1.适合存储轻量级的本地数据. 2.NSUserDefaults支持的数据格式有:NSNumber.NSData.NSDate.NSString.NSArray.NSDictionary.BOOL 3.以键值对的形式进行存储 4.存储时间为整体应用程序的存储时间,如果想需要删除,需要删除整体应用程序 //初始化一个userDefaults NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults set

应用UserDefaults储存游戏分数和最高分

我们在GameScene.swift里 private var currentScore:SKLabelNode! // 当前分数节点 private var cScore:Int = 0 /// Int 存当前分数 private var highScore:SKLabelNode! // 最高分数 private var hScore:Int = 0 /// Int 存最高分数 在子弹击中外星人时记录分数func bulletHitAlien(nodeA:SKSpriteNode,nodeB

[Swift4.2互动教程]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据

在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项(New File),创建一个类文件,用来存档用户数据.在弹出的文件模板选择窗口中,保持默认的选项(Cocoa Touch Class),然后点击下一步按钮,进入下一步设置页面.在类名输入框内输入类的名称. Class: Person 接着输入父类的名称. Subclass of: NSObject

【技术】 NSUserDefaults的使用

用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置. 该数据实际上是以"键值对"形式保存的(类似于NSDictionary),因此我们需要通过key来读取或者保存数据(value). 具体使用如下: 1.获取一个NSUserDefaults引用: NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 2.保存数据 [userDefaults setIntege

iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)

AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** 沙盒中文件夹: 1.Documents : 存储长久保存的数据 2.library: Caches:存放的缓存,比如:视频,音频,图片,小说等等 Perferences:存储偏好设置,比如:应用程序是否是第一次启动 保存用户名和密码. 3.t

UI_19 数据持久化(本地存储)

一.数据持久化概述 数据持久化就是数据的永久存储.其本质是将数据保存为文件,存到程序的沙盒中. 1.数据持久化的方式 1.1 writeToFile:简单对象写入文件 1.2 NSUserDefaults:应用程序偏好设置1.3 Sqlite:轻量级关系型数据库,不能直接存储对象(NSData除外),需要用到一些SQL语句,先将复杂对象归档(对象->NSData) 1.4 CoreData:对象型数据库,实质是将数据库的内部存储细节封装 1.5 Plist文件 2.应用程序沙盒 每一应用程序都有

iOS中几种数据持久化方案

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法之前,有必要说明以下沙盒机制.iOS程序默认情况下只能访问程序自己的目录,这个目录被称为"沙盒". 1.结构 既然沙盒就是一个文件夹,那就看看里面有什么吧