2011-10-11 8 views
5

मैं एक ऐसा एप्लिकेशन बना रहा हूं जो मेरे स्कूल के लोगों के लिए पाठ्यक्रम समय सारिणी तैयार करता हो। यह एप्लिकेशन के लिए मेरे मन में एक मोटा डिजाइन है:क्या NSDocument और CoreData एक संभावित संयोजन है, या NSPersistentDocument एकमात्र तरीका है?

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

मैं उन सभी पाठ्यक्रमों को स्टोर करने के लिए कोरडाटा का उपयोग करना चाहता हूं, जिनमें से छात्र चुन सकते हैं। इन्हें समय सारिणी के निर्माण और संपादन के साथ बदला नहीं जाएगा, बल्कि इसके बजाय, एप्लिकेशन की लॉन्च होने पर, जब यह पाठ्यक्रम की जानकारी के अपडेट की जांच करता है।

यह मेरे ऐप को ढांचा बनाने का तार्किक तरीका प्रतीत होता है। समस्या यह है कि, जब मैं एक NSDocument- आधारित अनुप्रयोग बनाता हूं और use CoreData बॉक्स को चेक करता हूं, इसे कोरडाटा सुविधाओं के साथ एनएसडी दस्तावेज़-आधारित ऐप बनाने के बजाय, यह इसे एक NSPersistentDocument- आधारित ऐप बनाता है।

मुझे नहीं लगता कि यह वही व्यवहार है जो मैं चाहता हूं। क्या CoreData का उपयोग करने का कोई तरीका है, लेकिन अभी भी एक NSDocument- आधारित एप्लिकेशन है? या NSPersistentDocument है जो मुझे बाद में उपयोग करना चाहिए? क्या मैं पूरे एनएस * दस्तावेज़ व्यवसाय को गलत समझ रहा हूं? क्या आपके पास मेरे आवेदन की संरचना के लिए कोई सलाह है?

किसी भी मदद के लिए धन्यवाद!

+0

आप कहते हैं कि आप उन सभी पाठ्यक्रमों को स्टोर करने के लिए कोर डेटा का उपयोग करना चाहते हैं, जिनसे छात्र चुन सकते हैं। क्या आप अपने एनएसडी दस्तावेज़ वर्ग में व्यक्तिगत छात्र के समय सारिणी को स्टोर करने के लिए कोर डेटा का भी उपयोग करेंगे? मुझे लगता है कि यह दूसरा सवाल है जो निर्धारित करता है कि एनएसपीर्सिस्टेंट डॉक्यूमेंट का उपयोग करना है या नहीं। – paulmelnikow

+0

@ नोआ: नहीं, मैं उपयोगकर्ता द्वारा चुने गए बाहरी फ़ाइल में छात्र के समय सारिणी को स्टोर करने की योजना बना रहा हूं। –

+0

किसी प्लिस्ट या कुंजी वाले संग्रहकर्ता की तरह कुछ का उपयोग करना, मुझे लगता है कि आपका मतलब है? आप उपयोगकर्ता को एक अलग फ़ाइल चुनने और अभी भी कोर डेटा का उपयोग करने दे सकते हैं। एनएसपीर्सिस्टेंट डॉक्यूमेंट आपको यही करने में मदद करता है। – paulmelnikow

उत्तर

2

हां, आप NSPersistentDocument का उपयोग किए बिना कोर डेटा का उपयोग कर सकते हैं। बस NSPersistentStoreCoordinator और NSManagedObjectContext को तुरंत चालू करें। यहां कुछ कोड दिया गया है: how do you create a NSManagedObjectContext

यदि आप एकाधिक NSDocument उदाहरणों के बीच कैटलॉग का एक उदाहरण साझा करना चाहते हैं, और प्रत्येक दस्तावेज़ के साथ सूची को जारी रखना नहीं चाहते हैं, तो यह जाने का एक अच्छा तरीका है। आपका एप्लिकेशन या ऐप प्रतिनिधि कोर्स कैटलॉग लोड करने का ख्याल रख सकता है, और आपका दस्तावेज़ किसी व्यक्तिगत छात्र के समय सारिणी को लोड करने और सहेजने का ख्याल रख सकता है। एक कुंजी संग्रहकर्ता का उपयोग करके, या खुद को एक लिस्ट लिखकर, आपको इसे स्वयं लागू करना होगा।

इसके बजाय, यदि आप चाहें, तो आप कोर डेटा का लाभ उठा सकते हैं। NSManagedObject एस के साथ छात्र कार्यक्रम का प्रतिनिधित्व करें और NSPersistentDocument संदर्भों को लोड और सहेजने को संभालें। आपको बहुत उपयोगी कार्यक्षमता मिलती है, जैसे पूर्ववत-रेडो, मुफ्त में।

+0

आह, विस्तार के लिए धन्यवाद! मुझे नहीं लगता कि मैंने अपने मूल प्रश्न में पर्याप्त स्पष्टीकरण शामिल किया है। धन्यवाद! –

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