2009-12-10 10 views
43

मैं अपने दूसरे आईफोन ऐप पर काम कर रहा हूं और कोर डेटा के बारे में उत्सुक हूं। परियोजना पर समय सीमित है, जैसा कि मेरा समय समग्र है।मुझे अपने आईफोन ऐप के लिए कोर डेटा का उपयोग क्यों करना चाहिए?

मैं एकमात्र देव हूं और मुझे एहसास है कि कोर डेटा उपयोगी होगा लेकिन मैं स्पष्ट रूप से क्यों नहीं समझा सकता।

कृपया निम्नलिखित obfuscation क्षमा करें .. ऐप को केंद्रीय सर्वर से foos की एक सूची पुनर्प्राप्त करने की आवश्यकता है। उपयोगकर्ता बार की सूची से बार में, बार में एक बार जोड़ सकते हैं, फिर बाज़ (!?) की सूची से बार में एक बाज़ जोड़ें, फिर बाज़ में कुछ वैकल्पिक फोटो और विवरण जोड़ें।

एक बार जब उपयोगकर्ता अपने बार और बाज़ काम से खुश होता है तो वे अपने डेटा को केंद्रीय सर्वर पर वापस अपलोड करने के लिए एक सिंक बटन दबाते हैं।

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

यदि मेरे मालिक से बहस है कि हमें कोर डेटा का उपयोग करना चाहिए, तो मैं उस पर गोली मार सकता हूं? तर्क grenades भी सराहना की है।

+1

कुछ भी नहीं है, लेकिन उल्लेख करना चाहता था:

यहाँ तुम क्यों कोर डाटा से अधिक क्षेत्र पर विचार हो सकता पर एक संक्षिप्त Quora पोस्ट है मैं एक समय पर एक बार यह एक ही सवाल पूछा था। आज मैं कोर डेटा के बिना एक ऐप बनाने की कल्पना नहीं कर सकता। अकेले संबंध मॉडलिंग अमूल्य है। यह मुसीबत के लायक है। –

उत्तर

53

कोर डाटा मुख्य रूप से आवेदन के सहायक पहलुओं में मदद मिलेगी - डेटा हठ, प्रस्तुति, आदि जैसी चीजों के अपने मालिक के लिए कुछ गोली अंक:

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

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

+7

इस सूची में जोड़ें कि कई मामलों में कोर डेटा कच्चे SQLite, CPU- और मेमोरी-वार दोनों से बेहतर प्रदर्शन कर सकता है। अपने NSFetchedResultsController के साथ बैच किए गए fetching का उपयोग कोड की एक पंक्ति है, फिर भी यह महत्वपूर्ण प्रदर्शन लाभ का कारण बन सकता है। मैंने कोर डेटा को डेस्कटॉप एप्लिकेशन पर हाथ से ट्यून किए गए SQLite कोड को भी हराया है, और मुझे यकीन है कि इसे आईफोन पर लाने पर प्रदर्शन प्राथमिकता थी। –

+0

सीखने की अवस्था निश्चित रूप से खड़ी है, और यह मुझे सरल कार्यों को करने से रोक रही है, जैसे कि अब तक टाइप किए गए उत्पाद कोड संख्याओं के आधार पर स्वत: पूर्णता में उत्पादों की एक सूची पुनर्प्राप्त करें। क्या कुछ सरल है जिसके लिए कोर डेटा प्रौद्योगिकियों के उपयोग की आवश्यकता है या SQLite का उपयोग करना ठीक होगा? मैं उम्मीद कर रहा हूं कि मैं बाद वाले को चुनने में कोई प्रदर्शन न खोएं। मैं एसक्यूएल स्टाइल कोडिंग से परिचित हूं, और स्टार्टअप पर सभी उत्पादों को लाया होगा, और उसके बाद उत्पादों को फ़िल्टर किया गया है जो सेट को प्रदर्शित करने वाले भविष्यवाणियों के साथ फ़िल्टर किया गया है जो अभी तक टाइप किए गए उत्पाद संख्या से शुरू होता है। क्या यह इसके बारे में जाने का तरीका है? – Pavan

+0

उपर्युक्त अनुप्रयोगों में से एक के लिए उपरोक्त एक विशेषता आवश्यकता है, और मैं वेब सर्वर से संपर्क करने की आवश्यकता को रोक रहा हूं क्योंकि स्वत: पूर्णता धीरे-धीरे प्रतिक्रिया देगी, इसलिए स्थानीय संग्रहण व्यवहार्य विकल्प है। लेकिन मेरे उद्देश्यों के लिए कौन सा बेहतर है?फिर मैं परिदृश्य प्रस्तुत करता हूं 2) ऐप नंबर 2 के लिए, यह सब कुछ 'ब्लॉब' फ़ील्ड x 3000 regstered उपयोगकर्ताओं में स्थानीय रूप से स्टोर बायोमेट्रिक उंगली प्रिंट डेटा करेगा, और जब कोई उपयोगकर्ता अपनी उंगली को अपनी फिंगरप्रिंट मशीन पर स्वाइप करता है, तो फिंगरप्रिंट वापस करने की आवश्यकता होगी डीबी में सहेजे गए प्रत्येक फिंगरप्रिंट टेम्पलेट के खिलाफ मिलान किया जाना चाहिए। कोर डेटा यहाँ या SQLite बेहतर है? – Pavan

1

आपके पास लगातार स्थानीय स्टोर के लिए कुछ अलग-अलग विकल्प हैं, लेकिन आपको उनमें से किसी एक का उपयोग करने की आवश्यकता होगी तो कोर डेटा का उपयोग क्यों न करें?

सीखने की अवस्था के लिए, उदाहरणों में ऐसे अनुप्रयोग हैं जो आपको यहां मदद करेंगे। नमूने के माध्यम से चलने के बाद यह बहुत सरल है।

आयकर

7

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

2

मैं अभी भी एक्स-कोड 101 श्रेणी के ज्ञान में हूं, लेकिन पहला ऐप मैंने अपने स्वयं के इस्तेमाल किए गए मूल डेटा (एक अच्छा ट्यूटोरियल पढ़ने के बाद) पर किया था।

बहुत सारे बॉयलरप्लेट सॉफ़्टवेयर हैं जो खाली ऐप टेम्पलेट में पहले से ही लिखे गए हैं, लेकिन डेटा बेस कार्यक्षमता के साथ वास्तविक प्रोग्रामर इंटरैक्शन न्यूनतम और सीधा है।

इसे एक शॉट दें: यह आपके विचार से आसान है।

5

जहां तक ​​सीखने की अवस्था चलती है, मुझे नहीं लगता कि यह आपके जैसा बुरा है। ऐप्पल के उदाहरण वर्गों और डिफ़ॉल्ट कोरडाटा प्रोजेक्ट टेम्पलेट का उपयोग करके, मैं एक दोपहर में एक काम करने वाला कोरडाटा ऐप (काफी सरल, लेकिन छोटा नहीं) करने में सक्षम था, और मेरे पास कोड से पहले खेलने के कुछ दिन लग गए वास्तव में अच्छी समझ है कि सभी चल रहे हिस्सों क्या थे (बाकी ऐप के विकास के दौरान, इसलिए टिंकरिंग में कोई समय बर्बाद नहीं हुआ था)।

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

1

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

+0

मुझे यकीन नहीं है कि आप इस उत्तर के साथ क्या कहने की कोशिश कर रहे हैं लेकिन शायद आपको कोर डेटा की गलती तंत्र के बारे में बात करनी चाहिए। बस यह कहने से अधिक शक्तिशाली है कि एक fetch केवल ऑब्जेक्ट आईडी देता है। आपको निश्चित रूप से स्मृति समस्याओं के बारे में चिंता करने की आवश्यकता है क्योंकि यदि आप किसी प्रबंधित ऑब्जेक्ट पर रिवर्स रिलेशनशिप एक्सेस करते हैं तो आप कोर डेटा में मजबूत संदर्भ चक्र बना सकते हैं। Thats क्यों refreshObject: मर्ज चेंज: विधि मौजूद है –

0

अन्य उत्तर यहां यह बताते हुए एक अच्छा काम करते हैं कि आप कोर डेटा का उपयोग क्यों कर सकते हैं, लेकिन क्योंकि इसकी सीखने की अवस्था एक आम चिंता प्रतीत होती है, यह उन लोगों के लिए उपयोगी हो सकती है जो इस प्रश्न पर ठोकर खाती हैं कि वहां एक है काफी "कम खड़ी" सीखने की अवस्था के साथ विकल्प: Realm। क्या पहले से ही कहा गया है परे जोड़ने के लिए https://www.quora.com/Why-would-you-use-Realm-over-Core-Data

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