मेरे पास NSManagedObjectContext
के दो उदाहरण हैं: एक मुख्य थ्रेड में उपयोग किया जाता है और दूसरा पृष्ठभूमि थ्रेड में उपयोग किया जाता है (NSOperation
के माध्यम से।) थ्रेड सुरक्षा के लिए, ये दो संदर्भ केवल NSPersistentStoreCoordinator
साझा करते हैं।साझा लगातार स्टोर के साथ NSManagedObjectContexts के बीच लंबित परिवर्तनों की प्रतिलिपि बनाना?
मेरी समस्या में पहले संदर्भ (मुख्य धागे पर) लंबित परिवर्तनों के साथ है, जो -save
तक दूसरे संदर्भ में उपलब्ध नहीं है। यह समझ में आता है क्योंकि साझा लगातार स्टोर में NSManagedObjects
की प्रतियां -insertedObjects
, -updatedObjects
, और -deletedObjects
द्वारा ट्रैक की जा रही हैं।
दुर्भाग्यवश, यह उपयोगकर्ता अनुभव के साथ एक समस्या प्रस्तुत करता है: किसी भी सहेजे गए परिवर्तन पृष्ठभूमि थ्रेड में उत्पन्न (समय लेने वाली) रिपोर्ट में प्रकट नहीं होंगे।
एकमात्र समाधान जो मैं सोच सकता हूं वह बुरा है: पहले संदर्भ से सम्मिलित, अद्यतन और हटाए गए ऑब्जेक्ट्स लें और उन्हें दूसरे संदर्भ के ऑब्जेक्ट ग्राफ़ पर ग्राफ्ट करें। डेटासेट में कुछ जटिल जटिल संबंध हैं, इसलिए मुझे इस दिशा में जाने में संकोच नहीं है। मैं यहां किसी को बेहतर समाधान के रूप में उम्मीद कर रहा हूं।
धन्यवाद विल! मैं 10 को लक्षित करना चाहता हूं।6, कि कठिन हो रही है, हालांकि हर दिन :-) - मैं पहले से ही परिवर्तन सूचना ट्रैकिंग हूँ, लेकिन मुझे यकीन है कि कैसे आप परिवर्तन फिर से लागू करने और इकाई संबंधों को बनाए रखने नहीं कर रहा हूँ। क्या आप थोड़ा और स्पष्ट कर सकते हैं? – chockenberry
आह हाँ। मैं अदृश्य रूप से अपने मॉडल के आधार पर एक धारणा बना रहा था, जो कि प्रत्येक ऑब्जेक्ट में यूयूआईडी (स्ट्रिंग) कुंजी है जिसे आपने स्वयं बनाए रखा है। –
पृष्ठभूमि एमओसी में बचाने आवेषण मुख्य एमओसी (नेस्टेड MOCs के बिना) के लिए नहीं दिखाई देंगे बिना। अद्यतन/मौजूदा वस्तुओं के लिए मिटा दिया है तो आप परिवर्तन सूचना (processPendingChanges के बाद जारी) को सुनने के काम करते हैं और वस्तुओं खुद को अपडेट करना चाहिए। – diederikh