天天看點

IOS資料持久化之一屬性清單(或偏好設定)

前言:現在開始轉IPhone開發,先從分析公司原先的系統開始,一邊學習,一邊Debug。跟Android一樣,項目中不可避免的要使用到資料的持久化功能,現在遇到了IOS中屬性清單(NSUserDefaults),感覺和Android中的偏好設定(SharedPreferences)類似,現在找個時間拎出來好好研究一番,下面的文章是我參考文獻中比較規範和全面的一篇博文,做個标記吧!

一.簡單介紹

很多iOS應用都支援偏好設定,比如儲存使用者名、密碼、字型大小等設定,iOS提供了一套标準的解決方案來為應用加入偏好設定功能

每個應用都有個NSUserDefaults執行個體,通過它來存取偏好設定。比如,儲存使用者名、字型大小、是否自動登入

存儲位置:

IOS資料持久化之一屬性清單(或偏好設定)

存儲形式:

IOS資料持久化之一屬性清單(或偏好設定)

二.代碼示例

1.storyboard

IOS資料持久化之一屬性清單(或偏好設定)

2.代碼

//  YYViewController.m
//  01-偏好設定
//
//  Created by apple on 14-6-7.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

\#import "YYViewController.h"
//偏好設定
@interface YYViewController ()
/**
 *儲存資料
 */
- (IBAction)saveData:(id)sender;
/**
 *  讀取資料
 */
- (IBAction)readData:(id)sender;

@end

@implementation YYViewController

- (IBAction)saveData:(id)sender {
    //1.擷取NSUserDefaults對象
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];

    //2儲存資料(如果設定資料之後沒有同步, 會在将來某一時間點自動将資料儲存到Preferences檔案夾下面)
    [defaults setObject:@"yangyong" forKey:@"name"];
    [defaults setInteger: forKey:@"age"];
    [defaults setDouble:f forKey:@"height"];
    [defaults setObject:@"man" forKey:@"gender"];

    //3.強制讓資料立刻儲存
    [defaults synchronize];
}

- (IBAction)readData:(id)sender {
    //1.擷取NSUserDefaults對象
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    //讀取儲存的資料
    NSString *name=[defaults objectForKey:@"name"];
    NSString *gender=[defaults objectForKey:@"gender"];
    NSInteger age=[defaults integerForKey:@"age"];
    double height=[defaults doubleForKey:@"height"];
    //列印資料
    NSLog(@"name=%@,gender=%@,age=%d,height=%.1f",name,gender,age,height);
}
@end
           

3.點選儲存資料,讀取資料按鈕列印如下

IOS資料持久化之一屬性清單(或偏好設定)

三、補充說明

1.儲存資料

複制代碼

//.擷取NSUserDefaults對象
       NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];

    //儲存資料
    [defaults setObject:@"yangyong" forKey:@"name"];
    [defaults setInteger: forKey:@"age"];
    [defaults setDouble:f forKey:@"height"];
    [defaults setObject:@"man" forKey:@"gender"];

    //.強制讓資料立刻儲存
    [defaults synchronize];
           

2.讀取資料

//1.擷取NSUserDefaults對象
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    //2.讀取儲存的資料
    NSString *name=[defaults objectForKey:@"name"];
    NSString *gender=[defaults objectForKey:@"gender"];
    NSInteger age=[defaults integerForKey:@"age"];
    double height=[defaults doubleForKey:@"height"];
           

3.重要說明

(1)偏好設定是專門用來儲存應用程式的配置資訊的, 一般情況不要在偏好設定中儲存其他資料。如果利用系統的偏好設定來存儲資料, 預設就是存儲在Preferences檔案夾下面的,偏好設定會将所有的資料都儲存到同一個檔案中。

(2)使用偏好設定對資料進行儲存之後, 它儲存到系統的時間是不确定的,會在将來某一時間點自動将資料儲存到Preferences檔案夾下面,如果需要即刻将資料存儲,可以使用[defaults synchronize];

(3)注意點:所有的資訊都寫在一個檔案中,對比簡單的plist可以儲存和讀取基本的資料類型。

(4)步驟:擷取NSuserDefaults,儲存(讀取)資料