2008-12-19 21 views
21

मेरी समस्या निम्न है। मेरे पास एक तरीका है जो बस एक एक्सएमएल अंश और XPath लेता है। इसके बाद मुझे उस एक्सएमएल अंश के लिए वस्तुओं की एक सरणी बनाना चाहिए। मतलब अगर मैं निम्न XML पारित कर दिया हो:उद्देश्य-सी में गतिशील रूप से तत्काल कक्षाएं, संभव है?

<user> 
    <name>Bob</name> 
    <age>50</age> 
</user> 

मेरे विधि वर्ग उपयोगकर्ता का एक उदाहरण का दृष्टांत और की-वैल्यू-कोडिंग उदाहरण चर सेट करने के लिए प्रयोग करेंगे। यह बल्कि सीधे आगे है। एकमात्र समस्या यह है कि मैं ज्यादातर एक पटकथा पृष्ठभूमि से आती हूं और यह देखने की कोशिश कर रहा हूं कि विधि को कक्षा का नाम पारित करना संभव है या नहीं। अभी यह एक उपयोगकर्ता वर्ग कर रहा है, बाद में यह एक कार वर्ग हो सकता है, और फिर एक होम क्लास। कोड को यथासंभव सार रखने के दौरान विभिन्न प्रकार के इस विधि से ऑब्जेक्ट्स को तुरंत चालू करने का सबसे अच्छा तरीका क्या है?

उत्तर

54

जैसा कि इसके नाम का उपयोग कर एक वर्ग instantiating के लिए, आप NSClassFromString उपयोग कर सकते हैं:

id obj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 
23

वर्ग वस्तुओं रहे हैं और इस्तेमाल किया जा सकता/अन्य वस्तुओं के रूप में ही भेजा है।

एक वर्ग वस्तु बनाने के लिए:

Class classForElement = [MyUserClass class]; 

उस वर्ग

id newObject = [[classForElement alloc] init]; 

की एक वस्तु का दृष्टांत करने के लिए वर्ग के नाम तत्व नाम के समान नहीं है, तो एक शब्दकोश है कि बनाने के ऑब्जेक्ट के रूप में वर्ग तत्व के रूप में तत्व का नाम है।

[NSDictionary dictionaryWithObjectsAndKeys: 
         [MyUserClass class], @"user", 
         [MyCarClass class], @"car", 
         [MyHomeClass class], @"home", 
          nil]]; 
1

आप कोर डेटा पर गहराई से देखना चाहते हैं। प्रबंधित वस्तुओं को बचाव के लिए आ सकता है।

कोकोडेव सेंटर में कुछ प्रारंभिक लेख हैं, लेकिन आपको शायद ऐप्पल दस्तावेज़ों की आवश्यकता है।

http://cocoadevcentral.com/articles/000086.php

[संपादित करें] मैं सिर्फ याद दिलाया गया था कि आप एक iPhone पर इस कर रहे हैं। कोर डेटा ढांचे की अनुपलब्धता का मतलब यह नहीं है कि आप इससे उधार नहीं ले सकते हैं, और केवल आपको जो चाहिए उसे दोबारा लागू करें। ओपन सोर्स ओपनस्टेप फ्रेमवर्क में से एक कोड हो सकता है।

मोबाइल डिवाइस पर आप अपने डेटा के आकार के बारे में सावधान रहना चाहेंगे।

एज्रा एपस्टीन क्रम पर वर्गों (और अधिक) के निर्माण:

http://www.macdevcenter.com/pub/a/mac/2002/05/24/runtime_partone.html

+0

कोको-टच टैग नोट करें। आईफोन पर कोर डेटा मौजूद नहीं है। –

+0

हालांकि, यह समाधान प्रदान करता है। एक न्यूनतम सबसेट मनोरंजन करें –

0

अपने विधि हस्ताक्षर में पैरामीटर प्रकार के रूप में आईडी का उपयोग कर प्रयास करें। किसी आईडी ऑब्जेक्ट को किसी भी क्लास ऑब्जेक्ट में टाइप-कास्ट किया जा सकता है

क्या आप एक आईफोन के लिए प्रोजेक्ट कर रहे हैं। क्या आप NSXMLNode का उपयोग कर रहे हैं। यदि आप हैं, तो कृपया ध्यान रखें कि NSXMLNode का उपयोग सिम्युलेटर पर ही अनुमति दी जाएगी। यह आईफोन पर काम नहीं करेगा क्योंकि NSXMLNode कोर लाइब्रेरी का हिस्सा है।

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