如何使用NSUserDefault将SKShapeNode存储到系统默认值

时间:2015-01-12 04:33:32

标签: ios sprite-kit nsuserdefaults skscene skshapenode

现在我正在开发基于SKScene的应用。我想将一些SKShapeNode存储到系统默认值中,这样用户在完全关闭后重新打开应用程序时仍然可以看到它们。我将SKShapeNodes存储在NSMutableDictionary中。我尝试使用NSUserDefault将其存储到setObjectForKey,但它给了我错误:

Property list invalid for format: 200 (property lists cannot contain objects of type 'CFType')

因为我正在尝试向其添加SKShapeNode。那么如何像NSUserDefault一样存储它呢?非常感谢!!

这是我的代码:     myNode = [SKShapeNode shapeNodeWithCircleOfRadius:radius];     [myNode setPhysicsBody:[SKPhysicsBody bodyWithCircleOfRadius:radius]];     myNode.fillColor = [uicolor greenColor];     myNode.lineWidth = 1.0;     [myNode setPosition:positionInScene1];     myNode.antialiased = YES;     myNode.glowWidth = 0.0;     myNode.physicsBody.allowsRotation = NO;     myNode.physicsBody.dynamic = YES;     myNode.physicsBody.restitution = 0.3;     [mainLists myNode forKey:someKey];(mainList是nsdictionary)     NSUserDefault * store = [NSUserDefault standardDefault];     [store setObject:mainList forKey:@" mainList"];     [store sychronize];

1 个答案:

答案 0 :(得分:0)

你可以尝试

[NSKeyedArchiver -archivedDataWithRootObject:]

首先将可序列化对象发送到NSData,然后将数据保存到userDefault。

如果要读取数据,则应使用NSKeyedUnarchiver将数据解码为SKShapeNode

您可以向NSKeyedArchiver/NSKeyedUnarchiver 学习 或者您只能保存节点的属性