2011-09-23 11 views
16

अपडेट नहीं करते हैं मान लें कि मेरे पास दो इकाइयां, कर्मचारी और विभाग हैं। एक विभाग के कर्मचारी के साथ बहुत से संबंध हैं, कई कर्मचारी प्रत्येक विभाग में हो सकते हैं लेकिन प्रत्येक कर्मचारी केवल एक विभाग से संबंधित है। मैं सभी कर्मचारियों को डेटा द्वारा क्रमबद्ध तालिकादृश्य में प्रदर्शित करना चाहता हूं जो कि एनएसएफटेड रीसेट कंट्रोलर का उपयोग करने वाले विभाग की संपत्ति है। समस्या यह है कि मैं अपनी तालिका को अद्यतन करना चाहता हूं जब एक विभाग ऑब्जेक्ट में परिवर्तनों को प्राप्त होता है जैसे कि कर्मचारी के नियमित गुण बदलते हैं, लेकिन FetchedResultsController संबंधित वस्तुओं को ट्रैक नहीं करता है। मैं निम्न कार्य करके आंशिक रूप से इस मुद्दे को पारित कर दिया मिल गया है:एनएसएफटेड रीडल्ट नियंत्रक रिश्ते के साथ

for (Employee* employee in department.employees) { 
    [employee willChangeValueForKey:@"dept"]; 
} 

/* Make Changes to department object */ 

for (Employee* employee in department.employees) { 
    [employee didChangeValueForKey:@"dept"]; 
} 

यह स्पष्ट रूप से आदर्श नहीं है, लेकिन यह कर्मचारी आधारित एफआरसी प्रतिनिधि विधि didChangeObject का कारण है कहा जाता है करने के लिए।

NSEntityDescription *employee = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:self.managedObjectContext]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"department.someProperty" ascending:NO]; 

यह महान काम करता है और सही ढंग से कर्मचारियों के लिए पहली बार यह कहा जाता है पर क्रमबद्ध करता, समस्या यह है कि जब मैं एक में परिवर्तन कर रहा है: वास्तविक समस्या मैं अब छोड़ दिया है एक एफआरसी छँटाई कि ट्रैक कर रहा है कर्मचारी वस्तुओं में है विभाग कुछ प्रॉपर्टी जो मेरी कर्मचारी तालिका की छंटाई को बदलना चाहिए कुछ भी नहीं होता है। क्या रिश्ते में मेरे कर्मचारी एफआरसी ट्रैक में परिवर्तन करने का कोई अच्छा तरीका है? विशेष रूप से मुझे सॉर्टिंग को अद्यतन करने के लिए किसी तरह की आवश्यकता होती है जब सॉर्ट किसी संबंधित प्रॉपर्टी पर आधारित होता है। मैंने कुछ समान प्रश्नों को देखा है लेकिन एक संतोषजनक समाधान खोजने में सक्षम नहीं था।

उत्तर

16

NSFetchedResultsController वास्तव में केवल एक ही समय में एक इकाई को देखने के लिए डिज़ाइन किया गया है। आपका सेटअप, जबकि यह समझ में आता है, यह NSFetchedResultsController क्या है जो वर्तमान में अपने आप को देखने में सक्षम है।

मेरी सिफारिश आपके स्वयं के दर्शक को स्थापित करना होगा। आप इसे ZSContextWatcher से बंद कर सकते हैं जिसे मैंने GitHub पर सेट किया है या आप इसे और भी सरल बना सकते हैं।

मूल रूप से आप NSManagedObjectContextDidSaveNotification पोस्टिंग के लिए देखना चाहते हैं और फिर अपनी तालिका को फिर से लोड करना चाहते हैं जब कोई व्यक्ति आपकी विभाग इकाई को निकाल देता है।

मैं ऐप्पल के साथ rdar दर्ज करने और NSFetchedResultsController में सुधार करने की सलाह भी दूंगा।

+0

सुनिश्चित नहीं है कि आप एक समय में एक से अधिक इकाई देखने के लिए एक एफआरसी स्थापित करना चाहते हैं। क्रमशः जल्दबाजी में क्रमशः बड़ा और बदसूरत हो जाएगा। आपको परिपत्र के साथ भी समस्या हो सकती है। – TechZen

+0

मैंने उन परिस्थितियों में भाग लिया है जहां आईपैड विचारों को राज्य को बनाए रखने के लिए एक से अधिक इकाइयों को देखने की आवश्यकता है। यही वह जगह है जहां विचार मूल रूप से आया था। –

+0

मैं माध्यमिक या उप-वर्ग के पक्ष में होगा। बेस क्लास में जितनी जटिलता आप जोड़ते हैं, उतना ही आपको प्रबंधन और डिबग करना होगा। – TechZen

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