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

How to store SKShapeNode to system defaults using NSUserDefault

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

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 绿色颜色]; myNode.lineWidth = 1.0; [我的节点setPosition:positionInScene1]; myNode.antialiased = 是; myNode.glowWidth = 0.0; myNode.physicsBody.allowsRotation = 否; myNode.physicsBody.dynamic = 是; myNode.physicsBody.restitution = 0.3; [mainLists myNode forKey:someKey];(mainList 是一个 nsdictionary) NSUserDefault *store = [NSUserDefault standardDefault]; [store setObject:mainList forKey:@"mainList"]; [商店同步];

你可以试试

[NSKeyedArchiver -archivedDataWithRootObject:]

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

当你想读取数据时,你应该使用NSKeyedUnarchiver解码数据到SKShapeNode

你可以向NSKeyedArchiver/NSKeyedUnarchiver 学习 或者只能保存节点

的属性