Desidero creare un gioco che utilizzi un sistema di livello. Quindi voglio memorizzare i miei livelli e poterli cambiare durante il gioco (per salvare lo stato). Così ho deciso di usare XML per memorizzare i livelli. Ho trovato la classe NSXmlParser per la lettura da XML, ma non riesco a trovare uno scrittore per salvare lo stato del livello. Nel mio gioco lo stato del livello e il livello sono molto simili (ho molti oggetti mobili), quindi non voglio memorizzare i dati dello stato del livello separati dal livello a cui appartiene. Il problema è che non riesco a trovare un modo per modificare facilmente i file XML su iPhone. Forse sto usando un approccio sbagliato.Classe scrittore XML iOS
risposta
È possibile utilizzare la libreria C libxml2
per leggere e scrivere XML. Ecco una breve introduzione: Cocoa Samurai: Getting Some XML Love with libXML2.
Tuttavia, hai considerato l'utilizzo di CoreData o l'implementazione del protocollo NSCoding
? NSCoding
sarebbe più facile da aggiungere alle classi esistenti.
Se gettate i dati in un NSDictionary
, si potrebbe fare (con avvertimenti):
[myDictionary writeToFile:pathToPlist atomically:YES];
provare il open source XML stream writer for iOS:
- Scritto in Objective-C, un singolo .h . e il file .m
- Uno @protocol per il supporto dello spazio dei nomi e una per senza
Esempio:
// allocate serializer
XMLWriter* xmlWriter = [[XMLWriter alloc]init];
// start writing XML elements
[xmlWriter writeStartElement:@"Root"];
[xmlWriter writeCharacters:@"Text content for root element"];
[xmlWriter writeEndElement];
// get the resulting XML string
NSString* xml = [xmlWriter toString];
Questo produce la seguente stringa XML:
<Root>Text content for root element</Root>
LGPL non è (a mio avviso) una buona licenza per i progetti iOS. Significa che se voglio usare il tuo codice, sono obbligato a rilasciare la mia domanda in un modulo ricollegabile (cioè devo rilasciare i file oggetto, cosa che potrei fare ma è un mucchio di problemi extra). Hai preso in considerazione l'utilizzo della licenza pubblica Mozilla? Obbliga le persone a rilasciare le modifiche apportate ai file con licenza MPL, ma non richiede il rilascio dei file oggetto. – JosephH
Meno problemi per tutti, meglio è. Ho aggiunto la licenza GNU permissiva, in quanto non è come le modifiche di terze parti saranno apportate alla libreria ogni giorno a breve comunque. – ThomasRS
mi consiglia di utilizzare KissXML. L'autore è partito da te in una situazione simile e ha creato un wrapper API compatibile con NSXML attorno a libxml. Discute le opzioni e le decisioni here sul suo blog.
Inoltre, questo è probabilmente un duplicato di: http://stackoverflow.com/questions/3849270/iphone-how-to-write-xml-files/3973554#3973554 – codelark
- 1. Scrittore di XML Ruby buono e semplice?
- 2. Scrittore è un metodo atomico?
- 3. multiple-reader, serrature single-scrittore a Boost
- 4. Scelta del parser XML IOS
- 5. Xml parsing in iOS tutorial
- 6. Lettore/scrittore JSON più veloce per C++
- 7. I/O canali vs lettore/scrittore
- 8. Seconda soluzione algoritmo a Lettore-scrittore
- 9. Genera classe C# da XML
- 10. Deserialize XML String in Classe
- 11. Parse XML utilizzando LINQ to XML per classe di oggetti
- 12. Jetty di filtro per modificare la risposta - java.lang.IllegalStateException: SCRITTORE
- 13. Conversione XML in JSON in iOS
- 14. Blocco di lettore/scrittore tra processi con Boost
- 15. RESTEasy non riconosce personalizzato scrittore del corpo del messaggio
- 16. Come serializzare XML classe figlio con la sua classe base
- 17. Ereditarietà della classe Doctrine in XML
- 18. Come può cito sfuggire caratteri scrittore csv in python
- 19. Fare dompdf come il mio pdf scrittore per phpWord
- 20. Creazione di una base C/C++ socket TCP scrittore
- 21. iOS - Utilizzare AFNetworking con classe NSURLProtocol personalizzata
- 22. iOS ottenere la classe di proprietà
- 23. Analisi di un file xml locale in sdk iOS
- 24. Come posso analizzare questo xml utilizzando NSXMLParser in ios?
- 25. Creazione di browser XML di file in IOS utilizzando LibMusicXML
- 26. android.view.InflateException: Riga file XML XML # 7: Errore durante il gonfiaggio del frammento di classe
- 27. aggiungi il nome della classe all'elemento nel file uibinder xml
- 28. C# Xml-Serializzazione di una classe derivata utilizzando IXmlSerializable
- 29. Uso della classe GLSurfaceView con layout xml android
- 30. Riferimento a una classe Shape personalizzata in XML
questo è senza uso di xml, sì? – Andrew
@Andrew il file risultante sarà XML (in particolare, in formato Plist) –