2015-01-12 79 views
0

現在我正在開發基於SKScene的應用程序。我想將一些SKShapeNode保存到系統默認值,以便用戶在完全關閉後重新打開應用程序時仍可以看到它們。我將SKShapeNodes存儲在NSMutableDictionary中。我試圖使用setObjectForKey將它存儲到NSUserDefault,但它給了我錯誤:如何使用NSUserDefault將SKShapeNode存儲到系統默認值

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];

+0

的財產是否有任何其他方式要做到這一點? –

+0

發佈您的代碼.... – LearnCocos2D

回答

0

您可以嘗試

[NSKeyedArchiver -archivedDataWithRootObject:] 

首先你序列化對象NSData的,然後將數據保存到userDefault。

當你想讀取數據,你應該使用NSKeyedUnarchiver

您可以從NSKeyedArchiver/NSKeyedUnarchiver 學習解碼數據的SKShapeNode或者你可以只保存節點

+0

你能以更具體的方式解釋嗎?我以前沒有用過。如果我創建一個像SKShapeNode * node = [SKShapeNode shapeNodeWithCircleOfRadius:radius];我設置了它的許多屬性,如質量,physicsBody,lineWith,顏色。那麼如何使用您提供的方式來存儲並加載它? –

+0

我已經想通了!非常感謝! –

相關問題