存档互连对象的简便方法

时间:2009-07-06 03:39:50

标签: iphone cocoa

在游戏中,我有一堆对象和对象集合,其中一些包含对其他对象的引用。有没有一种直接的方式来存档它们 - 保存游戏状态 - 同时保留这些引用?如果我理解得很好,NSArchiver可以做到这一点,但SDK 2上没有它,它是否在SDK 3上?

(之前我有点问过这个问题(best way to save/load iphone game data),但同时发布了SDK 3,我想知道这个话题是否有所进展。)

2 个答案:

答案 0 :(得分:3)

您需要使所有要序列化的类实现NSCoding协议。之后,您需要使用NSKeyedArchiver类对它们进行编码。该类将递归序列化您的对象,并将处理周期。 NSKeyedArchiver适用于iPhone SDK的所有版本。要解码对象,您将使用NSKeyedUnarchiver。

答案 1 :(得分:0)

在此处查看对象序列化:

Encoding/Decoding Objects (apple.com)

基本上,您必须使您的类符合键值编码,才能正确保存所有数据;它将它们归档到二进制属性列表中。在编写initWithCoder:和encodeWithCoder:函数之后,它几乎是自动的!