2009-06-02 14 views
7

मुझे यकीन है कि यह एक बेवकूफ सवाल होना चाहिए, लेकिन मैंने इंटरवेबिंग को खराब कर दिया है और इसका जवाब नहीं मिल रहा है। बहुत से लोग जनरेशन गैप पैटर्न का उपयोग करने के बारे में बात करते हैं, जिसमें आपके पास एक मॉडल है जो आपके मॉडल से उत्पन्न होता है, और उसके बाद क्षणिक गुणों और व्यवहार को जोड़ने के लिए उपclass है। इसका लाभ यह है कि यदि आप अपना निरंतर मॉडल बदलते हैं, तो आप अपने बेस कोड को ओवरराइट करने के किसी भी खतरे के बिना फिर से अपनी बेस फाइलें उत्पन्न कर सकते हैं।कोरडाटा - एनएसएमएनेज्ड ऑब्जेक्ट (जनरेशन गैप पैटर्न) के उप-वर्ग का उप-वर्ग कैसे बनाएं

मेरे पास NSManagedObject से प्राप्त आधार कार्डएमओ ऑब्जेक्ट है। मैं फिर अपना खुद का कार्ड ऑब्जेक्ट बनाने के लिए इसे उपclass।

मेरा सवाल है, मैं प्रबंधित एक कार्ड ऑब्जेक्ट कैसे बना सकता हूं?

मैंने कोशिश की:

Card* card = [NSEntityDescription insertNewObjectForEntityForName:@"CardMO" inManagedObjectContext:moc]; 

लेकिन यह वस्तु वास्तव में एक कार्ड नहीं है, और निश्चित रूप से एक अपवाद नहीं है जब मैं पर जाने के लिए इस वस्तु पर एक कार्ड विधि कॉल करने के।

मैं alloc/init के साथ एक कार्ड (जहां init सिर्फ कॉल [सुपर init]) बनाने की कोशिश की है, और फिर managedObjectContext करने के लिए इसे इस तरह जोड़ने:

[moc insertObject:(CardMO*)card]; 

यह मैं छुपे त्रुटि "देता है NSManagedObject वर्ग 'कार्ड' पर नामित प्रारंभकर्ता फोन करने में विफल "को फोन करके

मैं इस संशोधित करने की कोशिश की है [NSEntityDescription insertNewObjectForEntityForName: @" CardMO "inManagedObjectContext: [AIStoreManager sharedAIStoreManager] .managedObjectContext] के बजाय [सुपर init]। इस मामले में जिस वस्तु को मैं वापस प्राप्त करता हूं वह फिर से एक कार्डएमओ है, और मैं इस पर कार्ड विधियों को कॉल नहीं कर सकता।

मुझे क्या करना चाहिए?

और (बोनस अंक के लिए :-) - इस बाधा को पार करने के बाद, मुझे एक्सएमएल से अन्य कार्ड ऑब्जेक्ट्स बनाने की ज़रूरत है, और फिर उन्हें एनएसएमएनेज्ड ऑब्जेक्ट्स में बदलना होगा। मैं ऐप्पल के XMLReaderSAX के आधार पर कोड का उपयोग कर रहा हूं - मैं इस कोड को एक्सएमएल का एक हिस्सा सौंपता हूं, और यह मुझे कई कार्ड ऑब्जेक्ट्स की एक सरणी देता है। क्या मैं बाद में इन ऑब्जेक्ट्स को अपने प्रबंधित ऑब्जेक्ट संदर्भ में जोड़ सकता हूं, या क्या मुझे XMLReaderSAX में जाना है और यह बदलना है कि यह उन वस्तुओं को कैसे बनाता है?

मैं 3.0 पर एक आईफोन ऐप लिख रहा हूं, लेकिन मुझे लगता है कि कोर डेटा के लिए यह 10.5 के लिए समान है।

उत्तर

8

इसे सुलझाया!

डेटा मॉडल में, इकाई के लिए वर्ग का नाम सबसे अधिक व्युत्पन्न वर्ग - कार्ड के मामले में होना चाहिए। तब समस्या यह है कि आपको किसी भी नई फाइलें उत्पन्न करने से पहले कार्डएमओ को नाम बदलना याद रखना होगा।

यही कारण है कि लोग mogenerator का उपयोग करते हैं।

+0

प्रबंधित ऑब्जेक्ट को पार्सर से बनाने के लिए, मुझे ऐप्पल-व्युत्पन्न कोड में जाना था और उपरोक्त की तरह दिखने के लिए ऑब्जेक्ट निर्माण कोड को बदलना था। यह ठीक काम किया। –

0

एनएससीओडी का उपयोग क्यों नहीं करें? फिर आप एक्सएमएल या जेएसओएन या अपने आवेदन के बाहर ऑब्जेक्ट का वर्णन करने के किसी अन्य माध्यम का समर्थन कर सकते हैं।

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