在使用CCUserDefault时发现了问题,代码如下
void testUserDefault(){
CCUserDefault *ud = CCUserDefault::sharedUserDefault();
const std::string path = ud->getXMLFilePath();
printf("UserDefault path:%s\n", path.c_str());
//check is exist
bool isExist = ud->isXMLFileExist();
printf("isExist :%s\n", isExist ? "true" : "false");
ud->setBoolForKey("bool", true);
ud->setDoubleForKey("double", 2.3);
ud->setFloatForKey("float", 1.0f);
ud->setIntegerForKey("int", 20);
ud->setStringForKey("string", "hello world");
//a node information, storage as: ["dress":24] ...
ud->setIntegerForKey("dress", 16);
ud->setIntegerForKey("shoe", 12);
printf("dress:%d\n", ud->getIntegerForKey("dress"));
printf("shoe:%d\n", ud->getIntegerForKey("shoe"));
}
其中getXMLFilePath返回的路径不对,导致isXMLFileExist也不能正确判断是否存在XML了。CCUserDefault也不能删除东西,ios中它是使用NSUserDefault的,可以通过设置nil删除键值对。也就是将这个CCUserDefault只适合存储一些APP基本信息,以及数据量小,变化不大的APP。更好的还是使用sqllite。