ゲームの統計を保存するクラスを作成しています。各ラウンドのスコアを、永続化してファイルに書き込むことができる可変配列に保存したいと思います。
私は NSCoding プロトコルを使用し、encodeWithCoder および initWithCoder メソッドを実装しています。
#define masteredComponentsKey @"masteredComponents"
#define scoresKey @"scores"
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:_masteredComponents forKey:masteredComponentsKey];
[encoder encodeObject:_scores forKey:scoresKey];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if (self)
{
_masteredComponents = [decoder decodeObjectForKey:masteredComponentsKey];
_scores = [decoder decodeObjectForKey:scoresKey];
}
return self;
}
配列は Objective-C のオブジェクトへのポインターであるため、スコアは NSNumber や NSValue などのオブジェクトでラップされた整数である必要があると考えています。ただし、これらのオブジェクトは NSCoding プロトコルを実装していません。
では、NSCoding を使用して一連の数値を永続化する最良の方法は何でしょうか?
----これは私の最初の StackOverflow 投稿です。