2011-11-15 10 views
9

मेरी समस्या इस प्रकार है: Problem creating NSManagedObject derived classएनएसटीएनेज्ड ऑब्जेक्ट क्लास का उपयोग बिना initWithEntity :?

मैंने कोर डेटा में एक एनएसएमएनेज ऑब्जेक्ट स्थापित किया है और इसके लिए एक कक्षा है। हालांकि, बजाय एक समान NSObject वर्ग बनाने के बजाय, मैं NSManagedObject वर्ग उपयोग करना चाहते हैं, लेकिन मैं इकाई बनाने और इसे बचाने के लिए नहीं करना चाहती। मैं बस इसे सरणी के लिए उपयोग करना चाहता हूं, केवल जब मुझे कोर डेटा में ऑब्जेक्ट को सहेजने की ज़रूरत है, तो मैं insertEntity:

स्टोर * स्टोर = [[स्टोर ऑलोक] init] का उपयोग करना चाहता हूं;

यह मुझे निम्न त्रुटि दे रही है: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Store'

वहाँ एक रास्ता करने के लिए या तो उपवर्ग है या किसी भी तरह की वस्तुओं मैं सिर्फ एक मेज के लिए अस्थायी रूप से उपयोग कर रहा हूँ आवंटित करने के लिए NSManagedObject वर्ग/गुण का उपयोग करें?

धन्यवाद।

उत्तर

24

बस initWithEntity का उपयोग अपने NSMAnagedObjectContext में जब आप तैयार हों: और एक शून्य संदर्भ गुजरती हैं, तो insertObject फोन

NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyModelClass" inManagedObjectContext:myContext]; 
id object = [[MyModelClass alloc] initWithEntity:entity insertIntoManagedObjectContext:nil]; 
+1

आप शून्य से गुजर रहा नहीं कर रहे हैं जब बनाने इकाई विवरण। मेरे पास संदर्भ बनाना नहीं है या नहीं। – runmad

+1

इस विधि को कितना विश्वसनीय है? ऐसा लगता है कि मैंने क्यों मतदान किया है, लेकिन क्या यह ऐसा करने का एक दस्तावेज तरीका है? –

+0

साथ ही इकाई विवरण में भी पास हो सकता है ताकि यदि आप कभी अंततः इसे सम्मिलित करना चाहते हैं, तो आप कर सकते हैं। – amcc

3

यदि आप एमओसी को नहीं सहेजते हैं, तो आप सहेजने से पहले ऑब्जेक्ट को हटा सकते हैं और यह कभी भी जारी नहीं रहेगा।

कोर डाटा बने के लिए बढ़िया है, यह आवश्यक नहीं है। वास्तव में एमओसी को अक्सर स्क्रैच पैड के रूप में वर्णित किया जाता है। आप वस्तुओं को उत्पन्न कर सकते हैं और फिर उन्हें फेंक सकते हैं।

An instance of NSManagedObjectContext represents a single “object space” or scratch pad in an application.

एक अन्य समाधान अस्थायी वस्तुओं के लिए एक अलग एमओसी के लिए और फिर या तो अस्थायी एमओसी फेंक या अपने लगातार एमओसी में राज्यमंत्री के लिए कदम है।

इसलिए इस मामले में आप "अस्थायी एमओसी" पर - (void)deleteObject:(NSManagedObject *)object पर और - (void)deleteObject:(NSManagedObject *)object पर होंगे। insertIntoManagedObjectContext:

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