我正在创建一个类,该类将存储我的游戏的统计信息。我想将每个回合分数存储到一个可变数组中,该数组可以持久保存并写入文件。
我正在使用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帖子,所以请原谅任何不寻常的礼节----
NSValue
并NSNumber
实施NSCoding
协议,以便您可以使用它们..
NSValue
implementesNSSecureCoding
这是从继承NSCoding
,看看参考
因此,您可以使用它们:
[encoder encodeObject:@(_scores) forKey:scoresKey];
...
_scores = [[decoder decodeObjectForKey:scoresKey] intValue];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句