게임에는 여러 개체의 개체와 개체 모음이 있으며 그 중 일부는 다른 개체에 대한 참조를 포함합니다. 이러한 참조를 유지하면서 게임 상태를 저장하기 위해이를 보관하는 간단한 방법이 있습니까? 잘 이해한다면 NSArchiver는 그렇게 할 수는 있지만 SDK 2에서는 사용할 수 없었습니다. SDK 3에서 사용할 수 있습니까? 연결된 개체를 쉽게 보관하는 방법
는 (I 일종의 best way to save/load iphone game data (전에이 질문을했다) 그러나 SDK (3) 그 동안 발표되었으며,이 주제는 진행되고 있다면 알고 싶습니다.) 여기 이
2
A
답변
3
직렬화하려는 모든 클래스를 NSCoding 프로토콜을 구현해야합니다. 그런 다음 NSKeyedArchiver 클래스로 인코딩해야합니다. 이 클래스는 반복적으로 객체를 직렬화하고 순환을 처리합니다. NSKeyedArchiver는 모든 iPhone SDK 릴리스에서 사용할 수 있습니다. 개체를 디코딩하려면 NSKeyedUnarchiver를 사용합니다.
0
체크 아웃 객체 직렬화 :
Encoding/Decoding Objects (apple.com)
기본적으로, 당신은 당신의 수업을해야 키 - 값 코딩 준수, 제대로 모든 데이터를 저장하는 단계; 그것들을 바이너리 속성 목록에 저장합니다. initWithCoder : 및 encodeWithCoder : 함수를 작성한 후에는 거의 자동으로 수행됩니다.
+0
키 - 값 코딩과 NSCoding은 두 가지 별도의 개념입니다. –
관련 문제
- 1. CSS를 WebView에 영구 보관하는 방법
- 2. LaTeX - 목차에 부품을 보관하는 방법
- 3. Linq To SQL에 연결된 개체를 저장하지 마십시오
- 4. 모델 개체의 연결된 개체를 업데이트하려면 어떻게해야합니까?
- 5. Type.GUID에서 개체를 만드는 방법
- 6. 컬의 쿠키를 디스크가 아닌 메모리에 보관하는 방법
- 7. WCF/MQSeries : 포이즌 메시지를 보관하는 방법
- 8. kd-tree에 줄을 잘 보관하는 방법
- 9. 라이브 MySQL 데이터베이스를 보관하는 가장 좋은 방법
- 10. XML 데이터를 보관하는 가장 좋은 방법
- 11. SSIS를 사용하여 관련 데이터를 보관하는 방법
- 12. CakePHP에 파일을 보관하는 서식
- 13. 개체를 만드는 방법 다른 개체를 만드는 방법
- 14. SQL Server 데이터베이스 및 TFS의 개체를 확인하는 방법 싱크대에 있습니까?
- 15. DbDataReader 개체를 유용한 것으로 쉽게 변환하는 방법은 무엇입니까?
- 16. List <t> 개체를 쉽게 탐색 할 수 있습니까?
- 17. msmq 메시지를 보관하는 방법은 무엇입니까?
- 18. WCF를 통해 개체를 노출하는 방법?
- 19. Reflection을 사용하여 GridView 컨트롤에 연결된 POCO 개체를 반환합니다.
- 20. 코코아에 번들을 쉽게 쓰는 방법
- 21. opcode를 쉽게 얻을 수있는 방법
- 22. Excel에서 쉽게 시간을 계산하는 방법
- 23. xml 스키마를 쉽게 작성하는 방법
- 24. 스티커를 쉽게 인쇄하는 방법 (색상)
- 25. 레이블을 쉽게 흐리게 처리하는 방법
- 26. 많은 수의 개체를 구성하는 방법
- 27. 연결된 구성 요소를 동적으로 찾는 방법
- 28. 프로세스와 관련된 GDI 개체를 얻는 방법
- 29. 집합의 개체를 삭제하는 방법
- 30. 개체를 콜백에서 해제하는 방법?
개체간에 참조가 유지됩니까? 콜렉션의 오브젝트가 다른 콜렉션의 다른 오브젝트에 대한 포인터를 가지고 있다고 해봅시다. 오브젝트가 디코딩 된 후에도 포인터가 계속 남아 있다고합시다. –
예, 여러 참조 및주기를 처리합니다. 모든 객체가 NSCoding 프로토콜에서 initWithCoder :, encodeWithCoder :를 구현하는지 확인하면됩니다. 이것이 Cocoa에서 사용되는 가장 일반적인 장소는 NIB 파일입니다. Interface Builder는 인터페이스를 AppKit 클래스의 인스턴스로 생성 한 다음 NSCoder를 사용하여이를 아카이브합니다. –
그것은 매력처럼 작동합니다. 나는 비슷한 질문에 답하기 때문에 몇 달 동안 오도되었다. 그것을 정리해 주셔서 감사합니다, 그것은 진짜 인생의 변화자이고, 평판을 가진 사람들이 stackoverflow에서 말하는 것을 전혀 믿지 않는 교훈입니다. :) –