1

我正在创建一个类来存储我的游戏的统计信息。我想将每轮得分存储到一个可变数组中,该数组可以持久化并写入文件。

我正在使用 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 帖子,所以请原谅任何不寻常的礼仪----

4

1 回答 1

4

NSValueNSNumber实施NSCoding协议,以便您可以使用它们..

NSValueNSSecureCoding继承自的实现NSCoding,查看参考

所以你可以使用它们:

[encoder encodeObject:@(_scores) forKey:scoresKey];
...
_scores = [[decoder decodeObjectForKey:scoresKey] intValue];
于 2013-08-14T05:03:53.443 回答