使用NSCoding保存SKShapeNode的子类

时间:2014-04-15 17:53:29

标签: sprite-kit nskeyedarchiver nscoding

我有一个SKShapenode的子类,有2个额外的属性

@property(assign)float size;
@property(assign)float weight;

但是当我用核心数据保存NSMutableArray时,包含我的节点的某些子类,有关大小+重量的信息会丢失。

newLevel.tractorObjects = [NSKeyedArchiver archivedDataWithRootObject:arrayTractorObjects];

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

由于您似乎正在使用NSCoding对节点进行编码,因此您需要在子类中实现NSCoding。现在SKShapeNode正在进行所有编码,但它并不了解您的子类属性。要对属性进行编码,您需要实施encodeWithCoderinitWithCoder。这两个都应该调用super的实现,以便SKShapeNode可以编码自己,然后添加/提取自己的属性。