Я создаю класс, который будет хранить статистику для моей игры. Я хотел бы сохранить каждый раунд в изменчивый массив, который можно сохранить и записать в файл.Как я могу кодировать и декодировать массив чисел в Objective-C?
Я использую протокол 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 поэтому, пожалуйста, простите какое-либо необычные приличие ----
Я бы рекомендовал '' методы NSArray' WriteToFile: атомарно: 'и' arrayWithContentsOfFile: 'методы для записи массива в файл/чтение массива из файла. – MaxGabriel
Это хорошая мысль, и я подумал об использовании writeToFile: атомарно. Проблема в том, что я хотел бы гибко сохранять и восстанавливать примитивные типы данных, такие как int, BOOL, double. – altyus