iOS学习笔记-035.数据的读取——系统偏好的写入和读取

数据的读取——系统偏好的写入和读取

一、写入

很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能
每个应用都有个NSUserDefaults实例,通过它来存取偏好设置
例如:保存用户名、字体大小、是否自动登录

**注意:**UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘,应用程序就终止了。

出现以上问题,可以通过调用synchornize方法强制写入:

[defaults synchronize];

二、读取

  //1.获取偏好设置对象
  NSUserDefaults * defautls = [NSUserDefaults standardUserDefaults];

  //2.读取数据
  NSString * name = [defautls objectForKey:@"name"];
  BOOL autoLogin = [defautls boolForKey:@"autoLogin"];

三、写入

    //2.获取偏好设置对象
    NSUserDefaults * defautls = [NSUserDefaults standardUserDefaults];

    //3.保存
    // 通常,系统偏好中保存的数据,并不是实时保存的,具体保存时间,有系统调度
    [defautls setObject:name forKey:@"name"];
    [defautls setBool:autoLogin forKey:@"autoLogin"];
    // 如果,对于某些需要保存在偏好设置中的数据,要求实时的响应,需要在保存系统偏好设置时,调用一个同步方法
    [defautls synchronize];

这里写图片描述

四、代码

//
//  ViewController.m
//  03_UIView29_偏好
//
//  Created by 杞文明 on 16/1/10.
//  Copyright © 2016年 杞文明. All rights reserved.
//

#import "ViewController.h"

@interface ViewController (){
    UITextView * _contentTv;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self createLayout];
    [self readPreference];
}

#pragma mark -  创建布局
-(void)createLayout{
    //1.创建显示内容的标签
    UITextView * text1 = [[UITextView alloc]initWithFrame:CGRectMake(70, 20, 200, 200)];
    [text1 setFont:[UIFont fontWithName:@"Helvetica-Bold" size:30]];
    [self.view addSubview:text1];
    _contentTv = text1;

    //2.创建保存的按钮
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(120, 260, 130, 40)];
    [button setTitle:@"保存偏好设置"  forState:UIControlStateNormal];
    [button addTarget:self action:@selector(savePreference) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

#pragma mark - 读取偏好设置
-(void)readPreference{
    //1.获取偏好设置对象
    NSUserDefaults * defautls = [NSUserDefaults standardUserDefaults];

    //2.读取数据
    NSString * name = [defautls objectForKey:@"name"];
    BOOL autoLogin = [defautls boolForKey:@"autoLogin"];

    //3.数据组装显示到 contentLl上
    NSString * content = [NSString stringWithFormat:@"系统偏好读取到数据:\n用户名:%@\n自动登录:%d",name,autoLogin];
    [_contentTv setText:content];
}


#pragma mark - 保存偏好设置
-(void)savePreference{
    //1.创建要保存的对象
    NSString * name = @"小明";
    BOOL autoLogin = YES;

    //2.获取偏好设置对象
    NSUserDefaults * defautls = [NSUserDefaults standardUserDefaults];

    //3.保存
    // 通常,系统偏好中保存的数据,并不是实时保存的,具体保存时间,有系统调度
    [defautls setObject:name forKey:@"name"];
    [defautls setBool:autoLogin forKey:@"autoLogin"];
    // 如果,对于某些需要保存在偏好设置中的数据,要求实时的响应,需要在保存系统偏好设置时,调用一个同步方法
    [defautls synchronize];

    NSArray * caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString * cachesStr = caches[0];

    NSLog(@"%@",cachesStr);

}
@end

五、图示

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值