2010-10-21 10 views
6

इस तरह की पोस्ट के माध्यम से ब्राउज़ कर रहे थे लेकिन किसी ने मेरी समस्या का उत्तर नहीं दिया।NSFetchedResultsController प्रतिनिधि विधियां मर्ज करने के बाद फायरिंग नहीं कर रही हैंChangesFromContextDidSaveNotification

तरह CoreDataBooks, मैं आइटम जोड़ने और संपादित करने के लिए एक अलग एमओसी का उपयोग और इतने की तरह, उचित अधिसूचना पर ध्यान दें:

- (void)addControllerContextDidSave:(NSNotification*)saveNotification { 

    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
    // Merging changes causes the fetched results controller to update its results 
    [context mergeChangesFromContextDidSaveNotification:saveNotification]; 
    NSLog(@"merging changes in rootview"); 
} 

जब मैं एक को बचाने करते हैं, यह सही ढंग से मनाया जाता है। अधिसूचना को डीबग करने से सही संदर्भ दिखाता है, और संदर्भ को डीबग करने से बस जोड़ा गया आइटम दिखाता है। लॉग संदेश भी ठीक प्रिंट करता है। लेकिन कुछ भी नहीं होता है। NSFetchedResultsController आग के प्रतिनिधि विधियों में से कोई भी नहीं, न ही तालिका दृश्य अपडेट किया गया है।

मैंने कोई कैश नहीं किया या इसे साफ़ नहीं किया। मैंने तालिका दृश्य पर reloadData को आजमाया है, लेकिन कुछ भी नहीं। जब मैंने ऐप छोड़ दिया और पुनरारंभ किया, तो यह ठीक दिखाई देता है।

अद्यतन: अधिसूचना वास्तव में अपने object, जो सही आइटम शामिल है के रूप में सही संदर्भ को शामिल करता है, लेकिन userInfo हैश उस में कुछ भी नहीं है: अधिसूचना की तरह नहीं है

userInfo = { 
    inserted = "{(\n)}"; 
    updated = "{(\n)}"; 
} 

तो यह लग रहा है बदले गए आइटम के साथ सही संदर्भ होने के बावजूद इसमें कोई बदलाव है .... हम्मम्म।

उत्तर

1

और सबसे कम गलती के लिए पुरस्कार भी बहुत अच्छा है ... क्रिस्टोफ !!

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

चूंकि एमओसी अभी सहेजा गया था, दूसरी बचत में कोई बदलाव नहीं था और इस प्रकार अधिसूचना खाली बनी हुई थी। पहली बचत को हटाकर, जैसा कि मैंने बहुत पहले किया होगा, समस्या को ठीक किया।

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