前言:現在開始轉IPhone開發,先從分析公司原先的系統開始,一邊學習,一邊Debug。跟Android一樣,項目中不可避免的要使用到資料的持久化功能,現在遇到了IOS中屬性清單(NSUserDefaults),感覺和Android中的偏好設定(SharedPreferences)類似,現在找個時間拎出來好好研究一番,下面的文章是我參考文獻中比較規範和全面的一篇博文,做個标記吧!
一.簡單介紹
很多iOS應用都支援偏好設定,比如儲存使用者名、密碼、字型大小等設定,iOS提供了一套标準的解決方案來為應用加入偏好設定功能
每個應用都有個NSUserDefaults執行個體,通過它來存取偏好設定。比如,儲存使用者名、字型大小、是否自動登入
存儲位置:
存儲形式:
二.代碼示例
1.storyboard
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.點選儲存資料,讀取資料按鈕列印如下
三、補充說明
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,儲存(讀取)資料