2010-06-30 2 views
22

मैं एक आईफोन ऐप पर काम कर रहा हूं, और एक विशेष दृश्य में मुझे दो अलग-अलग इकाइयों को लोड करने की आवश्यकता है: एक जो UITableView को पॉप्युलेट करेगा, और दूसरा जो UITextView को पॉप्युलेट करेगा।कोर डेटा: क्या NSFetchedResultsController दो अलग-अलग इकाइयों को ला सकता है?

क्या दोनों गुणों को एक NSFetchedResultsController का उपयोग करना संभव है?

या मुझे दो अलग-अलग NSFetchedResultsController एस का उपयोग करने की आवश्यकता है?

इस समस्या से सबसे अच्छी तरह से संपर्क करने के तरीके पर कोई विचार?

+0

क्या आप अपना मॉडल कैसे स्थापित कर सकते हैं इसके बारे में थोड़ा और विशिष्ट हो सकते हैं? क्या दोनों संस्थाओं के बीच कोई रिश्ता है? यदि ऐसा है, तो आप दो fetches किए बिना आवश्यक मूल्यों को प्राप्त करने के लिए रिश्ते को पार करने में सक्षम हो सकते हैं। – Alex

+0

हाय एलेक्स, दो इकाइयां संबंधित नहीं हैं। यह इस तरह स्थापित है: * इकाई "Item_comment" उन टिप्पणियों का प्रतिनिधित्व करती है जिन्हें मैं UITableView में दिखाना चाहता हूं। उपयोगकर्ता उन्हें स्टोर करने के लिए उन टिप्पणियों की किसी भी संख्या पर टैप कर सकता है। * इकाई "निरीक्षण_डेटा" आइटम टिप्पणियों के पाठ का रिकॉर्ड दर्शाती है (इकाई नहीं, लेकिन केवल उस इकाई का पाठ)। उस रिकॉर्ड का पाठ मैं एक UITextView में प्रदर्शित करना चाहता हूं। – futureshocked

+2

एक ही fetch अनुरोध में लौटाए गए कई इकाई प्रकारों का एकमात्र तरीका यह है कि यदि वे दोनों एक सामान्य मूल इकाई से प्राप्त होते हैं और आप fetch इकाई को अभिभावक को सेट करते हैं। –

उत्तर

15

प्रत्येक fetch अनुरोध में केवल एक इकाई है और प्रत्येक प्राप्त परिणाम नियंत्रक के पास केवल एक ही fetch है। इसलिए, आपको प्रत्येक इकाई के लिए अलग नियंत्रकों की आवश्यकता है।

यदि आप इसके बारे में सोचते हैं, तो आप दो तर्कसंगत अलग-अलग इकाइयों को लाने के लिए भविष्यवाणी कैसे करेंगे?

आपको शायद दो fetches की आवश्यकता नहीं है। ज्यादातर मामलों में, आप उन संस्थाओं को ला सकते हैं जो तालिका को पॉप्युलेट करते हैं और फिर चयनित पंक्ति की इकाई के लिए एक रिलेशनशिप का उपयोग टेक्स्ट व्यू जैसे कुछ पॉप्युलेट करने के लिए करते हैं।

+2

धन्यवाद। मैंने एक दूसरा फ़ेच नियंत्रक जोड़ा, सुनिश्चित किया कि इसमें कोई प्रतिनिधि नहीं है, और यह वास्तव में इरादे से काम करता है। जब से मैं कोई भी कार्रवाई करने में एक बार दूसरे लाने नियंत्रक इसके परिणाम मिले हैं की जरूरत नहीं है, मैं सुनने की जरूरत नहीं है। कोई समस्या नहीं होगी – futureshocked

+3

आप बदलावों को सुनने की जरूरत किया है। आप बस प्रत्येक प्रतिनिधि विधि के लिए तुलना करते हैं। यदि (नियंत्रक == self.entity1FetchedResultsController) {...} else {...} –

+0

मैं एक स्थिति है जहाँ मैं दो संस्थाओं है कि उप-वर्ग एक सुपर इकाई होता है। इस मामले में fetch उन सभी को एक नियंत्रक में पकड़ने में सक्षम होना चाहिए। फिर आपको कुछ सामान्य विशेषता को सॉर्ट करने और सेल प्रतिपादन निर्धारित करने के लिए कक्षा प्रकार की जांच करने की आवश्यकता है। –

8

जैसा कि टेकजेन ने कहा, जवाब नहीं है।

हालांकि, आप NSManagedObjectContext स्वयं की बचतओं की निगरानी कर सकते हैं और उन बचतओं पर प्रतिक्रिया दे सकते हैं। यदि आपको वास्तव में एक से अधिक इकाई (आईफोन की तुलना में आईपैड पर कहीं अधिक आम कुछ देखने की आवश्यकता है) तो पर NSNotification पर्यवेक्षक जोड़ें और NSNotification पर -userInfo देखें जो वापस आता है। फिर आप यह निर्धारित करने के लिए परिणामों के खिलाफ भविष्यवाणी कर सकते हैं कि आपको अपना प्रदर्शन अपडेट करना है या नहीं। NSFetchedResultsController कवर के तहत ऐसा कर रहा है।

2
The quick answer is NO. But I found a creative answer. 

अपने tableViewController में, आप कितने स्कोप के साथ एक खोज पट्टी बनाते हैं।

जब विभिन्न दायरे का चयन किया जाता है, तो आप विभिन्न संस्थाएं प्राप्त कर सकते हैं!

यह काम करता है क्योंकि मैंने इस तरह एक ऐप बनाया है!

उपयोगकर्ताओं के पास दो अलग-अलग डेटा को अलग करने में आसान समय होगा!

1

सर्वश्रेष्ठ समाधान आपके मॉडल को दोबारा सुधारना होगा और देखें कि आपकी 2 इकाइयों में कुछ सामान्य है या नहीं। आप छेड़छाड़ करने वाली सामग्री के लिए एक सार तत्व बना सकते हैं, फिर उसमें से 2 इकाइयों को प्राप्त कर सकते हैं। अमूर्त इकाई पर लाने का प्रयास करें, और आपके fetch परिणाम नियंत्रक मिश्रित परिणाम लौटाना चाहिए।

+0

यह एक अच्छा विचार है लेकिन दुर्भाग्य से एप्पल हमें नीचा दिखाया सब एक विशाल तालिका में उप संस्थाओं को लागू करने से। – malhal

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