最初は下記のようにやっていたのですが、上手く動作しませんでした。
★保存時
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i=0; i<100; i++)
{
Player* test = [[[Player alloc] init] autorelease];
test.id = [NSString stringWithFormat:@"%04d", i];
test.name = @"aaaa";
[array addObject:test];
}
[defaults setObject:array forKey:@"TEST"];
NSData* classData = [NSKeyedArchiver archivedDataWithRootObject:array];
[defaults setObject:classData forKey:@"TEST"];
★復元時
NSMutableArray* array = [defaults arrayForKey:@"TEST"];
for (int i=0; i
Player* player = (Player*)[array objectAtIndex:i];
NSLog( player.id );
NSLog( player.name );
}
■下記のように対応することで上手く動作しました。
保存時の処理を下記のように修正
[defaults setObject:array forKey:@"TEST"];
↓
NSData* classData = [NSKeyedArchiver archivedDataWithRootObject:array];
[defaults setObject:classData forKey:@"TEST"];
復元時の処理を下記のように修正
NSMutableArray* array = [defaults arrayForKey:@"TEST"];
↓
NSData* classData = [defaults dataForKey:@"TEST"];
NSMutableArray* array = [NSKeyedUnarchiver unarchiveObjectWithData:classData];
※ ここで使っているPlayerクラスはNSCodingインタフェースを実装しています。
0 件のコメント:
コメントを投稿