Objective-C  NSUserDefault:画面遷移 読込・保存 基本

アプリケーションの設定値など、アプリを停止させてもずっと保持しておきたい情報などはよくありますが、NSUserDefaultsを使うとそうしたデータを簡単に保持できます。

ViewController.m

使い方としてはNSUserDefaultsを取得して、取得したNSUserDefaultsに対してデータを保存したり取り出したりすることでデータ保持を行います。

#import "ViewController.h"


@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *tfString;

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (void)viewWillDisappear:(BOOL)animated

{

    // キーボードの表示制御

    [self hideKeyboard];

}


// キーボードのReturnボタンがタップされたらキーボードを閉じるようにする

// UITextFiledの以下デリゲートメソッドを実装する

// Did End On Exit

- (IBAction)doEndTextFiled:(id)sender {

    

    [self.tfString  resignFirstResponder];

    

}


// 保存ボタンアクション

- (IBAction)Save:(UIButton *)sender {

    

    // ユーザーデフォルト保存

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *string01  = self.tfString.text;

    [defaults setObject:string01 forKey:@"Key01"];


    // データの保存確認

    BOOL successful = [defaults synchronize];

    

    if (successful) {

        NSLog(@"%@", @"データの保存に成功しました。");

    }


    [self hideKeyboard];

}


// キーボードの表示制御 - resignFirstResponder

- (void)hideKeyboard

{

    // キーボードの表示制御

    [self.tfString resignFirstResponder];

    

}

@end

SecondViewController.m

画面遷移した先での読み込み表示です。

#import "SecondViewController.h"


@interface SecondViewController ()

@property (weak, nonatomic) IBOutlet UILabel *lbString;


@end


@implementation SecondViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    // データデータ読込(NSString

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *string01 = [defaults stringForKey:@"Key01"];

    // ラベル表示

    self.lbString.text = string01;

    

    if (string01 == nil) {

        NSLog(@"%@", @"データが存在しません。");

    } else {

        NSLog(@"%@", string01);

    }


}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


/*

#pragma mark - Navigation


// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/


@end

 

GitHub UserDefault01

  

目 次