NSUserDefaultsで多次元配列を扱う

NSUserDefaultsはアプリの設定値等を手軽に保存、読み込みできるので頻繁に使用しています
int型の多次元配列を使いたくて調べたので書いておきます

<<保存>>
//宣言
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

//[defaults 保存する型:保存するデータ forKey:@キー];

//文字列
[defaults setObject:@"player" forKey:@"player"];
//int型
[defaults setInteger:18 forKey:@"hole"];
などなど・・

//最後にデータの更新をしておく
[defaults synchronize];

<<読み込み>>
//宣言
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

//data = [defaults 読み込む型:@キー];

//文字列
NSString s = [defaults stringForKey:@"player"]
//int型
int i = [defaults integerForKey:@"hole"]
などなど・・
詳細はー>参照ページ

やっと本題ですが、int型の二次元配列の保存/読み込みをする際のやり方
<<保存>>

//
//配列の宣言
int scoreData[4][18];

for(int i=0; i<4; i++){
    for(int j=0; j<18; j++){
       scoreData[j]=0;
    }
}

//宣言
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//保存
NSData *data = [NSData dataWithBytes:&scoreData length:sizeof(scoreData)];
[defaults setObject:data forKey:@"scoreData"];
//更新
[defaults synchronize];
//

<<読み込み>>

//
//配列の宣言
int scoreData[4][18];

//宣言
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//読み込み
NSData *data = [defaults dataForKey:@"scoreData"];
memcpy(&scoreData, data.bytes, data.length);

//

memcpyとか使うんですねぇ・・

  1. コメントはまだありません。

  1. トラックバックはまだありません。

*