【发布时间】:2013-08-14 04:56:23
【问题描述】:
我正在创建一个类来存储我的游戏的统计信息。我想将每轮得分存储到一个可变数组中,该数组可以持久化并写入文件。
我正在使用 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 中数组是指向对象的指针,我认为我的分数需要是一个 Object-Wrapped 整数,例如 NSNumber 或 NSValue。但是,这些对象没有实现 NSCoding 协议。
那么使用 NSCoding 持久化一堆数字的最佳方法是什么?
----这是我在 StackOverflow 上的第一篇文章,如有不妥之处请见谅----
【问题讨论】:
-
我推荐
NSArray方法writeToFile:atomically:和arrayWithContentsOfFile:方法用于将数组写入文件/从文件中读取数组。 -
这是个好主意,我考虑过使用 writeToFile:atomically。问题是我希望灵活地保存和恢复原始数据类型,例如 int、BOOL、double。
标签: objective-c nsnumber nscoding