2014-11-13 2 views
-1

인벤토리 배열을 영구화해야합니다 (앱이 닫히고 다시 열릴 때마다 재설정되지 않습니다). 저는 현재 GameState 싱글 톤 클래스를 사용하여 높은 점수, 플레이어 레벨 등을 저장합니다.이 모든 것들은 지금까지 정수 였고 사용하기에 꽤 간단합니다. 영구 (사용자) 데이터에 NSArray를 저장하십시오.

은 내가 GameState 싱글 톤 클래스에 관해서는 첨부 된 튜토리얼을 따라 : http://www.raywenderlich.com/63578/make-game-like-mega-jump-spritekit-part-22

지금 사용자 정의 SKSpriteNode 서브 클래스 내 재고의 배열을 저장해야합니다.

이 배열을 내 싱글 톤 클래스에 저장할 수 있으며 그 접근에 필요한 구문은 무엇입니까?

배열을 저장하려면 인코딩/디코딩을 설정해야합니까? 나는 그것이 싱글 톤 클래스보다 훨씬 복잡한 것처럼 보이는 다른 접근 방법임을 알았다.

SQL에 정통하지만 SQLite가 로컬로 저장된 것처럼 직접 검색 할 수 있으면 SQLlite를 사용하지 않는 것이 좋습니다.

+0

배열에 어떤 내용이 들어 있습니까? –

+0

SKSpriteNode의 하위 클래스입니다. 이 클래스를 일반 클래스로 만들고 SKSpriteNode 텍스처를 속성으로 저장할 수 있습니다. – meisenman

+0

NSUserDefaults를 사용하여 배열을 저장할 수 있습니다. 이 링크에서 NSUserDefaults 사용 방법에 대한 예제를보십시오. http://stackoverflow.com/questions/25423979/can-you-save-the-position-of-a-node-in-an-sks-file/25428510# 25428510 – sangony

답변

1

NSUserDefaults 알고에 대한 NSData, NSString, NSNumber, NSDate, NSArrayNSDictionary, 가장 쉬운 것은 당신이 그 데이터 유형의 조합에 저장해야 할 데이터를 저장하는 것입니다 때문에. 그렇게 할 수 없다면 사용자 정의 클래스에 NSCoding을 구현해야합니다. 따라서 인스턴스를 NSData 객체로 보관할 수 있습니다.이 객체는 소리가 나는 것처럼 어렵지 않습니다 : http://sam.roon.io/archiving-objective-c-objects-with-nscoding.

필자는 필자의 모델을 스프라이트 키트 개체의 "데이터"부분을 분리하여 별도의 데이터 전용 클래스 또는 구조체에 넣는 것으로부터 시작합니다. 그것은 연재 될 필요가있는 것을 쉽게 추론 할 수 있어야합니다.

+0

정말 고맙습니다. 그 링크는 누락되었습니다 ... "링크"내가 찾고있는. 뷰에서 데이터를 분리하는 것은 좋은 생각이며 NSData에서 배열을 쉽게 보관/보관 취소 할 수 있습니다. 예상대로 작동하면 테스트하고 표시 할 것입니다. 다시 한번 감사드립니다. – meisenman

+0

SKSpriteNode는 NSCoding을 준수하지만 왜 모든 데이터를 저장하겠습니까? – 0x141E

+0

플레이어 인벤토리를 저장해야합니다. 그렇지 않으면 사용자가 나를 싫어 할 것입니다. 필요한 추가 속성으로 SKSpriteNode의 하위 클래스를 저장할 수도 있고 표준 객체를 하위 클래스로 만들고 런타임에 SKSpriteNode를 만들 수도 있습니다. – meisenman

관련 문제