私が知っているように、カスタムオブジェクトを保存するには NSCoding を使用する必要があります。
私の例のように、クラス Game があり、この NSCoding メソッドでエンコードおよびデコードしています
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:[NSNumber numberWithInt:turnTime] forKey:@"turnTime"];
[aCoder encodeObject:[NSNumber numberWithBool:time] forKey:@"extra"];
[aCoder encodeObject:[NSNumber numberWithBool:saved] forKey:@"saved"];
[aCoder encodeObject:dragon forKey:@"dragon"];
[aCoder encodeObject:playerJokers forKey:@"playerJokersKey"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
turnTime=[[aDecoder decodeObjectForKey:@"turnTime"] integerValue];
dragon=[aDecoder decodeObjectForKey:@"dragon"];
time=[[aDecoder decodeObjectForKey:@"extra"] boolValue];
saved=[[aDecoder decodeObjectForKey:@"saved"] boolValue];
playerJokers=[aDecoder decodeObjectForKey:@"playerJokersKey"];
return self;
}
ゲームデータをセーブする
-(void)saveGameData
{
NSLog(@"saveGameData");
NSUserDefaults * userdefaults=[NSUserDefaults standardUserDefaults];
NSData * gameData=[NSKeyedArchiver archivedDataWithRootObject:self];
[userdefaults setObject:gameData forKey:@"gameKey"];
[userdefaults synchronize];
}
この方法で見られるように; カスタム クラスを NSData に変換し、NSArray に追加できます。
使いたいときに。配列を復元すると、車のデータを含む配列があります。
セーブデータを使いたいとき
Game * savedGame=[NSKeyedUnarchiver unarchiveObjectWithData:gameData];