2015年

6月

22日

Objective-C Plistデータ書き込み

プロパティリスト(plist)にデータを書き込みます。

ViewController.m

#import "ViewController.h"


@interface ViewController ()

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


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

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

    

    // ホームディレクトリを取得

    NSString *homeDir = NSHomeDirectory();

    

    // 書き込みたいplistのパスを作成

    NSString *filePath = [homeDir stringByAppendingPathComponent:@"sample.plist"];

    

    // 書き込むデータを作成

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

                          @"Snoopy", @"name",

                          [NSNumber numberWithInt:3], @"age",

                          nil];

    

    // 書き込み

    BOOL result = [dict writeToFile:filePath atomically:YES];

    if (!result) {

        NSLog(@"ファイルの書き込みに失敗");

        self.lbString.text = @"ファイルの書き込みに失敗";

    }

    

    NSLog(@"ファイルの書き込みが完了しました");

    self.lbString.text = @"ファイルの書き込みが完了しました";


}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


 

@end

アプリ領域の構成

アプリで参照できるのはアプリごとに割り振られたホームディレクトリに限られており、/Applications/<GUID>/以下がアプリ領域となります。
(ホームディレクトリはNSHomeDirectory()関数で確認できます)

ホームディレクトリ以下はさらにいくつかのディレクトリに分かれていて、それぞれ目的が異なります。

ディレクトリ説明
/アプリ名.app              メインバンドル。 アプリ自体のリソースファイルを保存する
/Documents                 アーカイブなどファイル単位で永続化する場合に使用
/Library/Caches           キャッシュ領域
/Library/Preferences    アプリケーションの設定情報を保存するディレクトリ。NSUserDefaultsで使用
/tmp                             一時ファイル保存場所

アプリ名の取得方法

NSLog(@"AppName: %@", [[NSBundle mainBundle] bundlePath]);


ホームディレクトリ以下へのアクセス

NSArray *paths = NSSearchPathForDirectoriesInDomains([ディレクトリタイプ], NSUserDomainMask, YES);

ディレクトリタイプに定数を渡すことで、上記のそれぞれのディレクトリパスを得ることができます。

NSDocumentDirectory
NSCachesDirectory

GitHub PlistWrite

  

目 次