COMPANY SERVICE STAFF BLOG NEWS CONTACT

STAFF BLOG

スタッフブログ

TECHNICAL

テクログ

2014.05.21

Objective-C | 本体に情報を保存する方法

テクログ

Mac,iPhone,Objective-C 全て利用歴5ヶ月の新米プログラマーが送る

自分が使って役立ったmethod集

シリーズ第八弾です。

今回はiPhone本体に保存された情報を参照する方法です。パスワードなど重要な情報と普通の情報で保存方法が違うので順番に説明します

保存側がベタで書いてあるのは本体に保存する箇所が一カ所しか無かったのでそのまま使いました。

common.h

+ (NSString *) getUserDefault:(NSString *)forKey;

common.m

// ユーザーデフォルトから取得
+ (NSString *) getUserDefault:(NSString *)forKey {
    NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
    NSString *ret = [myDefaults objectForKey:forKey];
    return ret;
}

呼び出し方

ViewController.h に修正はありません。

ViewController.m

#import "ViewController.h"
#import "common.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
?// Do any additional setup after loading the view, typically from a nib.

    // 値保存
    NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
    [myDefaults setObject:@"hozon" forKey:@"mydata"];
    

    // ユーザーデフォルト
    NSString *mydata = [common getUserDefault:@"mydata"];
    NSLog(@"mydata= %@", mydata);

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

実行結果

2014-05-20 20:18:59.376 test[1561:60b] mydata= hozon

パスワードなど秘密にしたい情報は、 Keychain Service が推奨となっています。

これを自前で用意するとなかなか大変なのですが、いいライブラリがありました。

soffes/sskeychain | GitHub

画面右端スクロールして中ほどにある「Download ZIP」ボタンを押してソースを一式取得します。

ファインダーからSSKeychain.h と SSKeychain.mを自分のプロジェクトにドラッグアンドドロップ

なんか聞かれると思うので、Destination: Copy items into ~にチェックをいれて Finish ボタン押下

次にProjectの一番上をクリックして画像の通りチェックし、Linked Frameworks and Librariesの下に有る「+」を押してSecurity.frameworkをAddしておきます。

Frameworks

先ほどのプログラム ViewController.mに #import “SSKeychain.h” 追加して呼び出します

ViewController.m

#import "ViewController.h"
#import "common.h"
#import "SSKeychain.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
?// Do any additional setup after loading the view, typically from a nib.

    // 値保存
    NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
    [myDefaults setObject:@"hozon" forKey:@"mydata"];
    

    // ユーザーデフォルト
    NSString *mydata = [common getUserDefault:@"mydata"];
    NSLog(@"mydata= %@", mydata);
    
    //
    // Keychain Service に mydataの中身をキーとしてパスワードを保存する
    [SSKeychain setPassword:@"securitycode"
     forService:@"sampleProject" account:mydata];

    // 取り出し
    NSString *passCode = [self getPassCode:mydata];
    NSLog(@"passCode= %@", passCode);

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

// パスワードをKeychain Serviceから取得
- (NSString *) getPassCode:(NSString *)myid {
    NSString *pass = [SSKeychain passwordForService:@"sampleProject" account:myid];
    return pass;
}

@end

実行結果

2014-05-20 20:45:37.071 test[1561:60b] mydata= hozon

2014-05-20 20:45:37.071 test[1561:60b] passCode= securitycode

そのほかのObjective-C関連の記事をお探しならコチラをどうぞ

弊社から出している拙作スケジュールのアプリです。
スケジュールというかちょっとした予定を入力して、社長、同僚、家族がどこ行った??っていうときに第三者が確認するためのアプリです
是非ダウンロードして感想をお聞かせ下さい。

『Team Scheduler』 概要
▼アプリ価格: 無料
▼対応OS: iOS(iPhone/iPod Touch)、Android
▼カテゴリ: 仕事効率化(App Store)、ビジネス(Google Play)
▼対応言語: 日本語
▼推奨環境:
iOS版: iPhone4以降、iOS6. 0以降
Android版: Android OS 2. 3以降
▼ダウンロード:
App Storeからダウンロード
Google playで手に入れよう

この記事を書いた人

core-corp

入社年

出身地

業務内容

特技・趣味

雑記に関する記事一覧

TOP