2009-09-30 15 views
12

के साथ स्वतः सेव करें मैं गैर-दस्तावेज़-आधारित कोर डेटा एप्लिकेशन पर काम कर रहा हूं।कोको और कोर डेटा

मैं परिवर्तनों को सहेजने के रूप में सहेजना चाहता हूं। उपयोगकर्ता इस प्रकार के आवेदन में अपेक्षा करता है। यह भी है कि ऐप्पल ने iPhoto या iTunes में लागू किया है।

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

तो मैं सोच रहा हूं कि किसी भी तरह से NSEditor प्रोटोकॉल जैसे किसी चीज़ को सहेजने का कोई तरीका होना चाहिए। प्रत्येक बार जब उपयोगकर्ता (या नियंत्रक) संपादन डेटा समाप्त करता है, तो एप्लिकेशन प्रतिनिधि को किसी भी तरह से एक सहेजने के लिए एक ट्रिगर अधिसूचित किया जाना चाहिए। बात यह है कि मुझे नहीं पता कि कहां देखना है।

मुझे लगता है कि अधिक जटिल परिचालनों के लिए, जिसके लिए कुछ पार-सत्यापन की आवश्यकता हो सकती है, मैं उपयोगकर्ता को समर्पित NSManagedObjectContext से जुड़े इंटरफ़ेस के साथ प्रस्तुत करता हूं।

+0

यदि आप पहले ही पूर्ववत समर्थन करते हैं, तो इसे हर बार जब आप पूर्ववत स्टैक पर कुछ दबाते हैं तो इसे सहेजें। –

+0

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

उत्तर

14

ऐपकिट ऐप में प्रत्येक ईवेंट के अंत में, कोरडाटा आपके लिए एक प्रोसेसिंग ट्रेन्डैक्शन चलाएगा।

इसका एक दुष्प्रभाव यह है कि यदि आपने परिवर्तन सूचनाएं प्राप्त करने के लिए अपने एनएसएमएनेज ऑब्जेक्ट कॉन्टेक्स्ट के साथ पंजीकृत किया है, तो आप प्रत्येक ईवेंट के अंत में कॉल करेंगे।

तो, उदाहरण के लिए, आपके अधिसूचना हैंडलर में, आप केवल संदर्भ को सहेजने के लिए कह सकते हैं।

हालांकि, आप एक ही संदर्भ से कॉलबैक में संदर्भ में सहेजने के बारे में पागल हो सकते हैं, इसलिए यदि आप प्रदर्शन करते हैं तो शायद बेहतर महसूस होगा: @selector (save :) बाद में: धक्का देने के लिए -प्रोसेजिंग ट्रांस्पेक्शन के बाद तक बचाएं।

आप पहले से ही रद्द कर सकते हैं: चयनकर्ता और देरी 5 सेकंड की तरह हो, इसलिए यदि उपयोगकर्ता या ऐप परिवर्तन के बंच के बीच में है तो वे सभी एक ही सहेजने में मिलेंगे ।

और, वास्तव में, यह वास्तव में स्वादिष्ट लाइब्रेरी 1.0-1.0 9 कैसे काम करता है।

-Wil

+0

टिप के लिए धन्यवाद। पूर्ववत प्रबंधक पर आपके सुझाव और पिगबैकिंग का विचार दोनों शानदार लगते हैं। बेशक, आपकी टिप्पणी एक प्रश्न पूछती है: स्वादिष्ट लाइब्रेरी के हाल के संस्करण अब इस तकनीक का उपयोग क्यों नहीं करते? –

+0

मैंने देरी के तुरंत बाद तुरंत सहेजने का प्रयास करने का फैसला किया, क्योंकि मैं एक बार में कई धागे में चल रहा हूं और जब, उदाहरण के लिए, आप मुख्य धागे में एक कवर बनाते हैं, तो आप वास्तव में पृष्ठभूमि ग्राफिक थ्रेड के प्रबंधित ऑब्जेक्ट कॉन्टेक्स को कवर देखने के लिए चाहते हैं तुरंत, तीन सेकंड में नहीं जब आप स्वतः सेव करते हैं। –

+0

तो विल क्या आप अभी भी प्रदर्शन चयनकर्ता कहते हैं: @ चयनकर्ता (बचाओ :) बाद में: बिल्कुल या क्या आप संदर्भ को स्वत: सहेजने के लिए किसी अन्य विधि का उपयोग कर रहे हैं? –