2010-01-28 12 views
5

मेरे पास मेरे 'मुख्य' एनएसएमएनेज्ड ऑब्जेक्ट कॉन्टेक्स्ट के आधार पर एक UITableView को पॉप्युलेट करने के लिए स्थापित एक NSFetchedResultsController है।NSFetchedResultsController अन्य संदर्भों से अपडेट नहीं दिखा रहा है

टाइमर में, मैं लगातार एक अलग NSManagedObjectContext में ऑब्जेक्ट्स जोड़ता हूं, लेकिन वह जो मुख्य संदर्भ के साथ अपने NSPersistantStoreCoordinator को साझा करता है।

मैं एनएसएमएनेज ऑब्जेक्ट कॉन्टेक्स्ट विल्लसेव नोटिफिकेशन नोटिफिकेशन भेज रहा हूं, और जब मैं ऐप को पुनरारंभ करना छोड़ देता हूं, तो मेरे पास पिछले रन से सभी डेटा है। हालांकि, वर्तमान NSFetchedResultsController के लिए कोई अपडेट नहीं होता है।

मैंने एक परीक्षण प्रोजेक्ट बनाया है और इसे here रखा है।



(मैं शुरू में सोचा था इस वहाँ खेल में एक से अधिक थ्रेड होने के कारण हो रहा था, लेकिन, यह जब सब कुछ एक थ्रेड में किया जाता है होता है)।

मूल प्रश्न

मैं एक NSFetchedResultsController एक UITableView, मेरे 'मुख्य' NSManagedObjetContext बंद आधारित पॉप्युलेट करने के लिए की स्थापना की है।

पृष्ठभूमि धागे में, मैं एक अलग NSManagedObjectContext में कई ऑब्जेक्ट्स डाउनलोड और आयात करता हूं, लेकिन वह जो मुख्य थ्रेड के संदर्भ के साथ अपने NSPersistantStoreCoordinator को साझा करता है।

मैं NSManagedObjectContextWillSaveNotification अधिसूचनाएं प्राप्त करने के लिए पंजीकृत हूं। जब मैं इन्हें प्राप्त करता हूं, तो मैं उन्हें मुख्य धागे पर भेजता हूं, और उन्हें अपने मुख्य संदर्भ में भेजता हूं।

डीबगर का उपयोग करके, मैं इन्हें देख सकता हूं, और सत्यापित कर सकता हूं कि वे वास्तव में संदर्भ में ऑब्जेक्ट जोड़ रहे हैं। हालांकि, मेरे NSFetchedResultsController अद्यतन नहीं कर रहा है। अगर मैं इसे मुख्य धागे में करता हूं, तो यह काम करता है। कॉलिंग -परफॉर्मफ़ेच: नियंत्रक पर इसे अपडेट करने का कारण बन जाएगा, इसलिए मुझे पता है कि यह नहीं है कि यह नई वस्तुओं को नहीं देख रहा है।

इनमें से अधिकांश बॉयलरप्लेट कोड है, बस अलग-अलग धागे में विभाजित है।

+0

"यह सब मुख्य धागे में कर रहा है", क्या आपने वास्तव में मुख्य धागे पर दो संदर्भ किए हैं और 'mergeChangesFromContextDidSaveNotification:' आदि पर कॉल किया है? – Yuji

+0

नहीं, जब मैं मल्टीथ्रेडिंग अक्षम करता हूं, यह सब एक संदर्भ के साथ किया जाता है (इस पर गलत जवाब था)। –

+0

क्या यह एनएसएफआरसी के साथ एक बग बनने के लिए निर्धारित किया गया है? –

उत्तर

11

क्या आप NSFetchedResultsController से कोई प्रतिनिधि कॉल बैक प्राप्त कर रहे हैं? यदि नहीं तो यह NSFetchedResultsController के साथ एक बग हो सकता है। मैं एक परीक्षण परियोजना बनाने की सिफारिश करता हूं जो इस मुद्दे को अलगाव में पुष्टि/अस्वीकार कर सकता है।

यदि आप इसे अलगाव में डुप्लिकेट कर सकते हैं;

  1. मैं देखना यह :)
  2. फ़ाइल एप्पल के साथ एक रडार अच्छा लगेगा।

कोड समीक्षा करने के बाद, इस सवाल का जवाब NSManagedObjectContextWillSaveNotification से NSManagedObjectContextDidSaveNotification के लिए अपनी सूचना पर्यवेक्षक को बदलने के लिए है। से पहले आप संदेश संदेश भेज रहे थे, जो आपके मुद्दों का कारण बन रहा था।

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