2012-04-15 10 views
5

मेरे पास मेरे ऐप में एक छोटी सी सेटअप प्रक्रिया है और मैं एक व्यक्ति के नाम और अन्य विवरणों को स्टोर करने के लिए एनएसएमएनेज्ड ऑब्जेक्ट बनाता हूं, हालांकि इस सेटअप के दौरान मैं ऑब्जेक्ट को तब तक सहेजना नहीं चाहता जब तक उपयोगकर्ता अंत में 'संपन्न' नहीं दबाता सेटअप के (बस किसी भी कारण से सेटअप रद्द कर दें)।स्टोर लेकिन CoreData को NSManagedObject सहेजें नहीं?

तो क्या संभवतः कोरडाटा में सहेजे बिना सेटअप प्रक्रिया के अंत तक ऑब्जेक्ट को थोड़ी देर तक रखने के लिए ऑब्जेक्ट रखना संभव है?

धन्यवाद।

उत्तर

2

जब आप कोरडाटा से निपट रहे हैं, तो सभी एनएसएएनएजेडऑबजेक्ट कॉन्टेक्स्ट में क्रियाएं जोड़ें/संशोधित/हटाएं - लेकिन जब तक आप उस संदर्भ पर 'सेव' कॉल नहीं करते हैं तब तक डिस्क पर परिवर्तन तब तक नहीं बने रहते हैं।

तो उत्तर हाँ है - यह वह व्यवहार है जिसे आप पहले ही प्राप्त कर रहे हैं। यदि आप NSManagedObjects के गुणों को जोड़ रहे हैं या संशोधित कर रहे हैं, तो इन परिवर्तनों को संदर्भ की स्मृति में रखा जाता है, लेकिन जब तक आप वास्तव में 'सेव' नहीं कहते हैं तब तक डिस्क पर सहेजा नहीं जा रहा है।

+1

ठीक है, जहां मुझे समस्याएं आ रही हैं। मैं संदर्भ पर कभी भी कॉल नहीं कर रहा हूं, मैं कुछ भी विवरण नहीं डाल सकता हूं, सभी फ़ील्ड को विस्तार दृश्य में खाली छोड़ दें और ऑब्जेक्ट की मेरी सूची पर वापस जाएं और देखें कि इसके बावजूद कोई ऑब्जेक्ट जोड़ा गया है (शून्य मानों के साथ)। –

+0

उसने कहा, मुझे लगता है कि मैंने पाया कि मैं क्या गलत कर रहा था। इसके अलावा, मुझे अपनी वस्तु को लगभग 5 विचारों को पारित करने की आवश्यकता है (जो करने के लिए सबसे अनुकूल काम नहीं है) मैं इसे आसानी से कैसे कर सकता हूं? –

+1

यदि प्रत्येक इंटरमीडिएट व्यू कंट्रोलर ऑब्जेक्ट के साथ इंटरैक्ट करेगा, तो यह किसी ऑब्जेक्ट के माध्यम से ऑब्जेक्ट को लगातार प्रत्येक व्यू कंट्रोलर (मुझे लगता है कि आप एक एनवी कंट्रोलर स्टैक का उपयोग कर रहे हैं) को पास कर सकते हैं। यदि विचार 2-4 के पास ऑब्जेक्ट के साथ कुछ लेना देना नहीं है, तो आप अपने 5 वें व्यू कंट्रोलर को अपने पहले के प्रतिनिधि (जहां आप मूल प्रबंधित ऑब्जेक्ट संदर्भ प्राप्त कर रहे हैं) बनाने पर विचार कर सकते हैं। – isaac

12

तुम भी

NSEntityDescription *ed = [NSEntityDescription entityForName:@"YourManagedObject" inManagedObjectContext:managedObjectContext]; 
YourManagedObject *obj = [[[YourManagedObject alloc] initWithEntity:ed insertIntoManagedObjectContext:nil] autorelease]; 

अपने संदर्भ में यह डालने के बिना कामयाब वस्तु बनाने के लिए उपयोग कर सकते हैं। आप बाद में [managedObjectContext insertObject:obj]; पर कॉल करके ऐसा कर सकते हैं।

+0

आप मेरा दिन बचाओ !!! की सराहना की। :) –

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