Je veux créer un jeu qui utilisera un système de niveau. Donc je veux stocker mes niveaux et pouvoir les changer pendant le jeu (pour sauver l'état). J'ai donc décidé d'utiliser XML pour stocker les niveaux. J'ai trouvé la classe NSXmlParser pour la lecture de XML, mais je ne peux pas trouver un écrivain pour sauvegarder l'état du niveau. Dans mon jeu, l'état de niveau et le niveau sont très similaires (j'ai beaucoup d'objets mobiles), donc je ne veux pas stocker les données d'état de niveau séparées du niveau auquel elles appartiennent. Le problème est que je ne peux pas trouver un moyen de modifier facilement les fichiers XML sur iPhone. Peut-être que j'utilise une mauvaise approche.iOS XML writer class
Répondre
Vous pouvez utiliser la bibliothèque C libxml2
pour lire et écrire du code XML. Voici une introduction rapide: Cocoa Samurai: Getting Some XML Love with libXML2.
Cependant, avez-vous envisagé d'utiliser CoreData ou d'implémenter le protocole NSCoding
? NSCoding
serait plus facile à ajouter aux classes existantes.
Si vous jetez les données dans un NSDictionary
, vous pouvez faire (avec des réserves):
[myDictionary writeToFile:pathToPlist atomically:YES];
Essayez l'open source XML stream writer for iOS:
- écrit en Objective-C, un seul .h . et le fichier .m
- Un @protocol pour le support d'espace de nom et un pour sans
Exemple:
// 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];
Ce produit la chaîne XML suivante:
<Root>Text content for root element</Root>
LGPL n'est pas (à mon avis) une bonne licence pour les projets iOS. Cela signifie que si je veux utiliser votre code, je suis obligé de libérer mon application sous une forme reliable (c'est-à-dire que je dois libérer les fichiers objet, ce que je pourrais faire mais c'est un tas de tracas supplémentaires). Avez-vous envisagé d'utiliser la licence publique Mozilla à la place? Cela oblige les utilisateurs à publier les modifications qu'ils apportent aux fichiers sous licence MPL, mais ne nécessite pas la publication des fichiers objet. – JosephH
Le moins de tracas pour tout le monde, mieux c'est. J'ai ajouté la licence GNU tout-permissive, car ce n'est pas comme si des changements de tiers seraient apportés à la bibliothèque d'ici peu de temps en temps. – ThomasRS
Je recommanderais d'utiliser KissXML. L'auteur a commencé dans une situation similaire à celle de vous et a créé un wrapper API compatible NSXML autour de libxml. Il discute des options et des décisions here sur son blog.
Aussi, c'est peut-être un doublon de: http://stackoverflow.com/questions/3849270/iphone-how-to-write-xml-files/3973554#3973554 – codelark
- 1. NSCache like class pour iOS 3.0
- 2. Doctrine Class Inheritance in XML
- 3. HTML Text writer
- 4. Lecture de documents Open-XML dans IOS
- 5. Choisir le bon analyseur XML IOS
- 6. Cisco IOS "show conf" en XML?
- 7. Python CSV DictReader/Writer questions
- 8. iOS iOS Intégration
- 9. Class from Schema
- 10. Palette de couleurs dans OpenOffice Writer
- 11. Plugin Windows Live Writer avec .NET 4
- 12. Liste des GUID VSS Writer bien connus
- 13. Windows Live Writer Webpreview et Weblayout
- 14. Stocker des données dans un fichier XML sous iOS
- 15. référence non définie à `Class :: Class() '
- 16. KnowledgeSyncProvider class
- 17. Render ViewUserControl from Class Library
- 18. locationServicesEnabled pour iOS 3 et iOS 4
- 19. C++ Exception Class Design
- 20. AS3 Enregistrement du fichier local sous iOS
- 21. php twitter class ne fonctionne plus
- 22. constants class en php
- 23. Aide Ping Class SendAsync
- 24. asp.net mvc transactionscope class
- 25. déclaration de class
- 26. Odd Static Class Édition
- 27. jQuery: si class = actif?
- 28. .class path api java
- 29. Ruby Class 500 Erreur
- 30. CSS div class sélection
c'est sans utilisation de xml, oui? – Andrew
@Andrew le fichier résultant sera XML (en particulier, en format Plist) –