2010-10-19 11 views
7

मैं एक गेम बनाना चाहता हूं, जो एक स्तर प्रणाली का उपयोग करेगा। तो मैं अपने स्तर को स्टोर करना चाहता हूं और खेल के दौरान उन्हें बदलने में सक्षम होना चाहता हूं (राज्य को बचाने के लिए)। तो मैंने स्तर भंडारण के लिए एक्सएमएल का उपयोग करने का फैसला किया। मुझे XML से पढ़ने के लिए NSXmlParser क्लास मिला, लेकिन मुझे स्तर की स्थिति को सहेजने के लिए कोई लेखक नहीं मिला। मेरे खेल में स्तर की स्थिति और स्तर बहुत समान हैं (मेरे पास बहुत सी जंगली वस्तुएं हैं), इसलिए मैं स्तर के डेटा को उस स्तर से अलग करने के लिए नहीं चाहता जो इसके संबंधित है। समस्या यह है कि मुझे आईफोन पर एक्सएमएल फाइलों को आसानी से संशोधित करने का कोई तरीका नहीं मिल रहा है। शायद मैं एक बुरा दृष्टिकोण का उपयोग कर रहा हूँ।आईओएस एक्सएमएल लेखक वर्ग

उत्तर

3

आप XML को पढ़ने और लिखने के लिए सी libary libxml2 का उपयोग कर सकते हैं। यहां एक त्वरित परिचय है: Cocoa Samurai: Getting Some XML Love with libXML2

हालांकि, क्या आपने CoreData का उपयोग करने या NSCoding प्रोटोकॉल को लागू करने पर विचार किया है? NSCoding मौजूदा कक्षाओं में जोड़ना आसान होगा।

5

आप एक NSDictionary में डेटा फेंक, तो आप (कैविएट्स के साथ) कर सकता है:

[myDictionary writeToFile:pathToPlist atomically:YES]; 
+0

यह कोई XML उपयोग के साथ है, हाँ? – Andrew

+0

@ एंड्रयू परिणामस्वरूप फ़ाइल एक्सएमएल (विशेष रूप से, प्लास्ट प्रारूप में) –

5

खुला स्रोत XML stream writer for iOS का प्रयास करें:

  • ऑब्जेक्टिव-सी में लिखा, एक भी ज । और .m फ़ाइल नाम स्थान समर्थन के लिए
  • एक @protocol और वे इसके बिना

उदाहरण के लिए:

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

यह निम्न XML स्ट्रिंग का उत्पादन:

<Root>Text content for root element</Root> 
+0

एलजीपीएल (मेरी राय में) आईओएस परियोजनाओं के लिए एक अच्छा लाइसेंस नहीं है। इसका मतलब है कि अगर मैं आपके कोड का उपयोग करना चाहता हूं, तो मैं अपने आवेदन को पुनः लिंक करने योग्य रूप में रिलीज़ करने के लिए बाध्य हूं (यानी मुझे ऑब्जेक्ट फाइलों को रिलीज़ करना होगा, जो मैं कर सकता था लेकिन यह अतिरिक्त परेशानी का एक गुच्छा है)। क्या आपने मोज़िला पब्लिक लाइसेंस का उपयोग करने पर विचार किया है? यह लोगों को एमपीएल लाइसेंस प्राप्त फ़ाइलों में किए गए परिवर्तनों को जारी करने के लिए बाध्य करता है, लेकिन ऑब्जेक्ट फ़ाइलों को जारी करने की आवश्यकता नहीं होती है। – JosephH

+2

हर किसी के लिए कम परेशानी, बेहतर। मैंने जीएनयू ऑल-परमिटिव लाइसेंस जोड़ा है, क्योंकि ऐसा नहीं है कि किसी तीसरे पक्ष के बदलाव किसी भी दिन लाइब्रेरी में जल्द ही किए जाएंगे। – ThomasRS

5

मैं का उपयोग कर की सिफारिश करेंगे KissXML। लेखक ने आपके जैसी ही स्थिति में शुरुआत की और libxml के आस-पास एक एनएसएक्सएमएल संगत एपीआई रैपर बनाया। उन्होंने अपने ब्लॉग पर विकल्पों और निर्णयों here पर चर्चा की।

+1

इसके अलावा, यह संभवतः एक डुप्लिकेट है: http://stackoverflow.com/questions/3849270/iphone-how-to-write-xml-files/3973554#3973554 – codelark

संबंधित मुद्दे