2011-07-31 14 views
7

में ऑटो-सेव और संस्करणों के साथ शूबॉक्स/लाइब्रेरी एप्लिकेशन हमारे पास एक जूता-शैली का एप्लिकेशन है जिसे हम शेर में प्रथम श्रेणी के नागरिक बनाना चाहते हैं। इसका मतलब है अन्य चीजों के साथ ऑटो-सेव & संस्करणों को एकीकृत करना। वर्तमान में हमारे पास दस्तावेज़-केंद्रित मॉडल नहीं है और हम केवल एक सादे कोर डेटा स्टैक का उपयोग करते हैं।ओएस एक्स शेर

UIPersistentDocument एकीकृत करने के लिए दोनों & संस्करण स्वत: सहेजें एक बहुत आसान तरीका प्रदान करता है और मैं दो विकल्प हम से चुन सकते हैं नए एपीआई के साथ एकीकृत करने देखें:

  1. "दुरुपयोग" हमारे shoebox शैली आवेदन के लिए NSPersistentDocument । तकनीकी रूप से यह एक दस्तावेज़-आधारित अनुप्रयोग होगा, लेकिन उपयोगकर्ता इंटरफ़ेस अभी भी एक ही iPhoto- जैसी लाइब्रेरी होगी। यह अवधारणात्मक रूप से बहुत अधिक समझ में नहीं आता है, लेकिन हमें मुफ्त में बहुत सारी कार्यक्षमता मिल जाएगी।
  2. वर्तमान सादे कोर डेटा स्टैक रखें और ऑटो-सेव & संस्करण मैन्युअल रूप से कार्यान्वित करें।

मैंने ऐप्पल प्रतिनिधियों से हमें जो दृष्टिकोण लेना चाहिए, उसके बारे में राय सुनाई और हमारे कार्यान्वयन को शुरू करने से पहले चीजों को स्पष्ट करना बहुत अच्छा होगा। जबकि मुझे लगता है कि 1. इसका उपयोग नहीं किया जाना चाहिए यह भी बहुत मोहक है, क्योंकि हमें बहुत कुछ मिलता है। कोर डेटा एप्लिकेशन में संस्करणों को ऑटो-सेव & मैन्युअल रूप से कार्यान्वित करने पर मुझे पर्याप्त दस्तावेज़ीकरण भी नहीं मिला।

मैं वास्तव में 1. का प्रयोग करते हैं, लेकिन मैं कुछ समस्याओं देखें:

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

हम केवल iCloud सिंक मैं निश्चित रूप से हमारे आवेदन के लिए एक दस्तावेज केंद्रित मॉडल का उपयोग कर के बारे में सोचना नहीं होगा एकीकृत करने के लिए है, क्योंकि कोर डाटा यह सीधे समर्थन करता है, चाहते हैं तो। मैं डेवलपर ओवरहेड के बारे में अधिक चिंतित हूं, अगर हम अपने वर्तमान गैर-दस्तावेज़ आधारित प्रतिमान से चिपके रहेंगे।

आप किसी भी सलाह या विचार कैसे shoebox अनुप्रयोगों नई शेर दुनिया में एकीकृत किया जाना चाहिए है?

+1

"जूता-शैली अनुप्रयोग" क्या है? – TechZen

+1

एक शूबॉक्स या लाइब्रेरी एप्लिकेशन एक ऐसा एप्लिकेशन है जो एकाधिक दस्तावेज़ों का उपयोग करने के बजाय आपके सभी डेटा को एक विंडो के अंदर रखता है। जूताबॉक्स-शैली अनुप्रयोगों के लिए अच्छे उदाहरण हैं iPhoto, iTunes; दस्तावेज़-आधारित अनुप्रयोगों के लिए अच्छे उदाहरण पृष्ठ या मुख्य नोट हैं। हालांकि आईट्यून्स और आईफ़ोटो शूबॉक्स अनुप्रयोग हैं, फिर भी वे "लाइब्रेरी" के साथ काम करते हैं जो स्वयं एक दस्तावेज़ है और आप विभिन्न पुस्तकालयों के बीच स्विच कर सकते हैं। –

उत्तर

3

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

कि संस्करणों में अधिक या एक पूरी तरह से अपारदर्शी सुविधा कम है ... लेकिन वहाँ एक सवाल आप अपने आप को जवाब होगा है: क्या आपके एप्लिकेशन के कुछ भागों आप संस्करण में लाना चाहेगा? क्या डेटा को बहाल करने की बात आती है तो क्या यह वास्तव में सब कुछ एक फ़ाइल में समझ में आता है? संस्करण (अन्य की तुलना में & पेस्ट कॉपी) को बहाल फ़ाइल-सिस्टम स्तर पर होता है। और इस प्रकार, क्या यह वास्तव में हमेशा एक बार में सब कुछ बहाल करने के लिए समझ में आता है? यदि आपका उत्तर नहीं है, तो आपको शायद आपको कई छोटी फाइलों में मॉडल को भी थप्पड़ मारना होगा ...

अगले प्रमुख रिलीज तक यहां सुधार की उम्मीद न करें। मैंने इंजीनियरों की टिप्पणियों से अनुमान लगाया है ...

+1

+1 संस्करण केवल दस्तावेजों के संदर्भ में समझ में आता है वही सामग्री ओवरटाइम विकसित होती है। सभी में एक डेटाबेस स्टोर के अलग-अलग "संस्करण" होने का अर्थ नहीं है क्योंकि आप आमतौर पर केवल डेटा की वर्तमान स्थिति को कैप्चर करना चाहते हैं। डेटाबेस में, एक नया "संस्करण" लगभग हमेशा वास्तव में नए डेटा के रूप में माना जाता है। यदि आपको किसी डेटाबेस में वर्जनिंग की तरह कुछ चाहिए, तो आप इसे डेटा मॉडल में ही डिज़ाइन करते हैं क्योंकि यह दस्तावेज़ संस्करण के मामले में अलग-अलग समय में दर्ज डेटा के रूप में शायद ही कभी सरल होता है। – TechZen

+0

@ मैक्स: आप NSFileVersion का भी उपयोग कर सकते हैं और संस्करणों के लिए अपना यूआई बना सकते हैं, लेकिन आपको फैंसी टाइम मशीन यूआई नहीं मिलेगी, सभी लोगों का उपयोग किया जाता है। मुझे नहीं लगता कि यह यूएक्स परिप्रेक्ष्य के उपयोगकर्ताओं के लिए एक लाभ है यदि प्रत्येक ऐप के अपने कस्टम संस्करण यूआई होंगे। ऐसी समस्या भी है जो NSPersistentDocument * समर्थन-आधारित SQLite- आधारित कोर डेटा मॉडल के लिए सहेजता है। मेरे लिए ऐसा लगता है कि कार्यान्वयन समाप्त नहीं हुआ है, क्योंकि प्राकृतिक विकास यह होगा कि संस्करण रिकॉर्ड-आधारित (फ़ाइल-आधारित) संशोधनों के बजाय भी समर्थन करता है। मॉडल को विभाजित करना काम नहीं करेगा (शूबॉक्स)। –

+0

@TechZen: हाँ, आप मूल रूप से सही हैं। लेकिन फिर एक दस्तावेज क्या है? आपके पास NSFileWrapper के अंदर कोर डेटा आधारित दस्तावेज़ हो सकते हैं जो अभी भी सहायक फ़ाइलों के साथ एक पूर्ण मॉडल रखता है। यदि हम एक पुस्तक उदाहरण लेते हैं, तो आप लाइन कहां खींचते हैं? क्या प्रत्येक दस्तावेज़ में अध्यायों के साथ एक पुस्तक है या एक दस्तावेज एक पुस्तकालय है जिसमें विभिन्न पुस्तकों हैं और आपके पास शोध, मज़ा, कॉमिक किताबें जैसी विशिष्ट पुस्तकालय हैं? कोर डेटा डेटाबेस नहीं है और एपीआई आपको क्लासिक डेटाबेस जैसे मॉडलों से बातचीत करने नहीं देते हैं। इसके अलावा एनएसपीर्सिस्टेंट डॉक्यूमेंट और आईक्लाउड में पहले से ही सीडी के लिए रिकॉर्ड-आधारित समर्थन है। –

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