द्वारा ऑब्जेक्ट्स अपडेट होने पर कोरडाटा एक गलती को पूरा नहीं कर सका, मुझे लगता है कि मैं त्रुटि संदेश समझता हूं: CoreData कोई गलती नहीं कर सका, लेकिन मुझे यकीन नहीं है कि मुझे इससे कैसे निपटना चाहिए।HTTP सेवा
हमारे पास एक ऐसा एप्लिकेशन है जहां हम जेएसओएन सेवा से लौटाए गए डेटा को जारी रखने के लिए कोर डेटा का उपयोग करते हैं। आज मैं निम्नलिखित कर रहा हूं।
- लगातार की दुकान से स्थानीय वस्तु प्राप्त करें और यूआई पर लौटने
- सर्वर से पूछें कि वस्तु अद्यतन किया जाता है - जब मैं इस सवाल का जवाब मिलता है, मैं अद्यतन कोर डेटा अपडेट वस्तु के साथ वस्तु कामयाब
- अद्यतन यूआई
समस्या है; भले ही मैं बहु धागे का उपयोग नहीं करता हूं, मुझे कभी-कभी एक त्रुटि मिलती है जब HTTP अनुरोध प्रबंधित ऑब्जेक्ट को हटा देता है जो मेरा यूआई बरकरार रहता है। मैंने ऑब्जेक्ट्स को रिटर्न ऑब्जेक्ट्सएफ़फॉल्ट के साथ लाने की कोशिश की। मैंने सोचा कि मैं तब एक प्रबंधित ऑब्जेक्ट के सभी रिश्तों और गुणों तक पहुंच सकता हूं, भले ही इसे हटा दिया गया हो (जब तक मेरा यूआई इसे बनाए रखे)।
मुझे इस समस्या को कैसे हल करना चाहिए?
मैंने सोचा कि मैं पढ़ने और लिखने के लिए अलग NSManagedObjectContext का उपयोग कर सकता हूं। मैं इस परीक्षण बना दिया है:
MyAuthorMO *authorUpdate = [[MyAuthorMO alloc] init]; // I have made this init insert the object into the updateContext
authorUpdate.firstname = @"Hans";
authorUpdate.lastname = @"Wittenberg";
authorUpdate.email = @"[email protected]";
NSManagedObjectContext *updateContext = [[MyCoreManager getInstance] managedObjectContext];
NSError *error = nil;
[updateContext save:&error];
NSManagedObjectContext *readContext = [[MyCoreManager getInstance] readOnlyContext];
NSFetchRequest *fetchRequest = [managedObjectModel fetchRequestFromTemplateWithName:@"authorByEmail" substitutionVariables:[NSDictionary dictionaryWithObject:@"[email protected]" forKey:@"EMAIL"]];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSArray *authors = [readContext executeFetchRequest:fetchRequest error:&error];
MyAuthorMO * readAuthor = [authors objectAtIndex:0];
// Delete the author with update context:
[updateContext deleteObject:authorUpdate];
[updateContext save:&error];
NSLog(@"Author: %@ %@, (%@)", readAuthor.firstname, readAuthor.lastname, readAuthor.email);
लॉग ठीक रूप में लंबे समय के रूप में मैं लाने के लिए readContext का उपयोग outputted है। अगर मैं fetch के लिए UpdateContext का उपयोग करता हूं, तो मुझे अपवाद मिलता है। यह आशाजनक लग रहा है, लेकिन मुझे डर है कि मैं बाद के चरणों में समस्याओं में भाग जाऊंगा। जल्द या बाद में मैं शायद ऐसी संपत्ति तक पहुंचने का प्रयास करूंगा जो पूरी तरह से नहीं लाया जाता है (एक गलती)। मैं जिस व्यवहार को ढूंढ रहा हूं उसे मैं कैसे प्राप्त कर सकता हूं?
निक, आप शायद सही हैं। मैंने अपनी पिछली पोस्टों के माध्यम से पढ़ा है और सर्वोत्तम समाधान स्वीकार किए हैं। आपके कमेंट के लिए धन्यवाद। – Andi