【菜鸟教程】保存对象到存档

找了下发现没有类似的教程,研究了下发出了跟大家共享下:

大家都知道COCOS保存存档是用这样的方法:

UserDefault::getInstance()->setStringForKey("name", "Superman");
UserDefault::getInstance()->setIntegerForKey("age", 100);
UserDefault::sharedUserDefault()->flush();

然后你会在相应的路径找到一个:UserDefault.xml文件,这个文件就是游戏的存档了。
打开可以看到:

<?xml version="1.0" encoding="UTF-8"?>
-<userDefaultRoot>
<name>Superman</name>
<age>100</age>
</userDefaultRoot>

支持的有布尔值,浮点值,字符串等基本数值,如果要保存更高级的数据,例如你自定义的类的对象,
那么就要用到一个:setDataForKey,这个setDataForKey顾名思义,跟其他的set不同之处是它保存的
是字节流。因此我们可以把我们的对象转为字节流然后保存到存档。

自定义的类:

class A
{public: 
int a;
 std::string str;
public: A(){
 a = 100;
 str = "Hello";
 }
};

将对象输入到存档:


A a, *p;p = &a;
Data data1; 
data1.copy((unsigned char*)p, sizeof(A));
UserDefault::getInstance()->setDataForKey("data", data1);
UserDefault::sharedUserDefault()->flush();

读取存档:

Data data = UserDefault::sharedUserDefault()->getDataForKey("data");
 A* buffer = (A*)data.getBytes(); 
CCLOG("%s", buffer->str.c_str());
 }

好吧,这个教程简直无脑。我就是无聊水一水。:13:

有总比没有好吧

mark…

这个能实现的话,做存档什么的将非常方便.
期待.

挺好的呀,说实话还真没使用过setData这个方法呢

:6: ;lua貌似没有这个方法setDataForKey。。。。