मैं आमतौर पर मेरी कोर डाटा ढेर और संबंधित वस्तुओं और व्यवहार का प्रबंधन करने के लिए एक समर्पित वस्तु बनाने के। यह उपयोगी है क्योंकि कोर डेटा के साथ बहुत बॉयलर प्लेट है इसलिए मैं एक सामान्य आधार प्रबंधक वर्ग बना सकता हूं और फिर प्रत्येक ऐप के लिए उप-वर्ग का उपयोग कर सकता हूं। मैं आमतौर पर इसे AppNameDataModel कहते हैं।
मैं डेटामोडेल ऑब्जेक्ट के अंदर प्रबंधित ऑब्जेक्ट संदर्भ को छिपाना पसंद करता हूं। यह ऐप में अन्य ऑब्जेक्ट्स को कोरोड स्टैक तक पहुंच के लिए डेटामोडेल ऑब्जेक्ट से पूछने के लिए मजबूर करता है जो अच्छी encapsulation और सुरक्षा देता है।
आमतौर पर, मैं डेटा मॉडेल क्लास में इकाइयों के लिए fetches वापस करने के लिए विधियां बनाते हैं उदा।
-(NSFetchRequest *) entityNameFetch;
... और फिर डेटामॉडल में एक performFetch
विधि है। उपयोग में, एक नियंत्रक किसी इकाई के लिए एक फ़ेच के लिए पूछता है, fetch को कॉन्फ़िगर करता है और फिर डेटामोडेल को fetch करने और परिणामों को वापस करने के लिए कहता है। आप उन विधियों की पीढ़ी को स्क्रिप्ट कर सकते हैं जो fetch को लौटाते हैं और प्रदर्शन फ़ेच बॉयलर प्लेट भी है। यह सब बहुत समय बचाता है खासकर प्रोटोटाइप करते समय।
डेटामोडेल उदाहरण का संदर्भ स्वयं नियंत्रक से नियंत्रक तक पारित किया जा सकता है लेकिन मुझे लगता है कि यह सिंगलटन पैटर्न का एक वैध उपयोग है, इसलिए मैं अक्सर डेटामोडेल को सिंगलटन बना देता हूं और इसे एक्सेस करने के लिए किसी संपत्ति के लिए UIViewController पर एक श्रेणी प्रदान करता हूं ।इसका मतलब है कि प्रोजेक्ट में जो भी व्यू कंट्रोलर जोड़ता है, वह स्वचालित रूप से डेटामोडेल तक पहुंच प्राप्त करता है।
यह पैटर्न सब कुछ अच्छी तरह से encapsulated और मॉड्यूलर रखता है। यह नए विचारों को जोड़ने या परियोजनाओं के बीच डेटा मॉडल साझा करना आसान बनाता है। प्रारंभ में स्थापित करने में थोड़ा सा काम लगता है लेकिन एक बार आपके पास बेस क्लास हो जाने के बाद, भविष्य का उपयोग बड़े पैमाने पर बढ़ जाता है।
धन्यवाद बोल्टक्लॉक, मुझे इस सुविधा के बारे में पता नहीं था! –
संभव डुप्लिकेट [कोको/कोको टच एप्लिकेशन में "कोर डेटा स्टैक" कहां रखा जाए] (http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in -एक-कोको-कोको-स्पर्श आवेदन) –