सिंकिंग और बैकअप के लिए कोर डेटा, iCloud और CloudKit का उपयोग करना और यह एक साथ कैसे काम करता है


111

मैं एक ऐप बनाने के शुरुआती चरण में हूं, जहां मैं डेटा, सिंक और बैकअप डेटा बचाना चाहूंगा। ऐप किसी भी फाइल को डेटाबेस में डेटा स्टोर नहीं करेगा। यह iOS 8 और ऊपर होने वाला है इसलिए मैं CloudKit का उपयोग करने में सक्षम हूं। मैंने कुछ शोध किए और अभी भी स्पष्ट नहीं है कि कोर डेटा, आईक्लाउड और क्लाउडकिट एक साथ कैसे काम करते हैं।

जहाँ तक CloudKit को समझने और क्लाउड से / से डेटा प्राप्त करने का एक तरीका है। क्या CloudKit iCloud के साथ डेटा सिंक करने का सिर्फ एक अलग तरीका है?

मेरे प्रश्न हैं:

  1. यदि मैं CloudKit का उपयोग करता हूं, तो क्या मुझे अभी भी स्थानीय कोर डेटा डेटाबेस बनाने की आवश्यकता है?

    • यदि हाँ, तो यह स्वचालित रूप से iCloud के साथ सिंक हो जाएगा या मुझे दोनों स्थानों पर स्टोर करने के लिए तरीकों को कॉल करना होगा?
  2. यदि डेटा केवल क्लाउड में संग्रहीत है, तो उपयोगकर्ता इसे एक्सेस करने में सक्षम होगा जब iOS डिवाइस इंटरनेट से कनेक्ट नहीं है। मैंने पढ़ा कि CloudKit में केवल सीमित कैशिंग होगी।

  3. अगर iCloud खाता सक्षम नहीं है तो वह कैसे काम करेगा।

यदि कोई व्यक्ति कोर डेटा डेटाबेस को ऑफ़लाइन और ऑनलाइन सहेजने और समन्वयित करने की प्रक्रिया में प्रत्येक तकनीक को तोड़ सकता है।

मेरी वर्तमान समझ है:

  • कोर डेटा का उपयोग स्थानीय स्तर पर डेटा को स्टोर करने के लिए किया जाता है

  • iCloud क्लाउड में डेटा और स्टोर्स को सिंक करता है

  • CloudKit क्लाउड में डेटा को स्टोर और प्रबंधित करने की क्षमता देता है ??

मुझे आशा है कि मैंने इस सवाल के लिए पर्याप्त जानकारी प्रदान की है कि यह बंद न हो।


2
यहां तक ​​कि मैंने उस पर इतना शोध नहीं किया, लेकिन जितना मैंने समझा कि यह स्थानीय में संग्रहीत नहीं है। यह सामान्य सर्वर क्लाइंट सेवा की तरह कुछ है। यही कारण है कि इंटरनेट के बिना आप अपने DB तक नहीं पहुँच सकते। और डॉक्टर के अनुसार यदि उस समय उपयोगकर्ता ने icloud खाता सक्षम नहीं किया था, तो आप केवल सार्वजनिक कंटेनर से डेटा पढ़ सकते हैं
सचिन

@ क्या हम ऐसा कर सकते हैं, कृपया सुझाव दें, stackoverflow.com/questions/25600556/…
Nikunj

जवाबों:


183

ऐसी बात हे:

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

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

मैंने CloudKit का वर्णन करते हुए एक ब्लॉग पोस्ट लिखी है, जो किसी ऐसे व्यक्ति के दृष्टिकोण से है जो अतीत में Core Data और iCloud का उपयोग करता है।

अद्यतन , जून 2016: के लिए सबसे हाल ही में प्रलेखन के रूप मेंNSPersistentStoreCoordinator , iCloud के साथ कोर डेटा से संबंधित सब कुछ पदावनत के रूप में चिह्नित है। परिणामस्वरूप नए विकास के लिए शायद इसे टाला जाना चाहिए।


1
अतीत में iCloud के साथ कोर डेटा का उपयोग करते समय मुझे भ्रष्टाचार से परेशानी हुई थी, लेकिन iOS 7 के बाहर आने के बाद मैंने इसका ज्यादा इस्तेमाल नहीं किया है। यह बहुत बेहतर माना जाता है। CloudKit के साथ यह कहना जल्दबाजी होगी, क्योंकि यह अभी भी आधिकारिक तौर पर जारी नहीं किया गया है।
टॉम हैरिंगटन

3
@ टोम हैरिंगटन - क्या आप आईओएस 8 के लिए आईक्लाउड के साथ कोर डेटा आजमा सकते हैं और हमें अपनी छाप बता सकते हैं? मैंने iOS 7 में भी बहुत भ्रष्टाचार का अनुभव किया है, और Apple समर्थन ने कई बगों की पुष्टि की है। मुझे उम्मीद है कि iOS 8 एक स्वीकार्य स्तर पर अपनी विश्वसनीयता लाता है, लेकिन आपको, विशेषज्ञ;) से सुनने में अच्छा
लगेगा


3
"आपको कोई क्लाउड-विशिष्ट कोड लिखने की ज़रूरत नहीं है, आपको आने वाले परिवर्तनों के लिए सुनने की ज़रूरत है (जो कि एक अलग प्रबंधित वस्तु संदर्भ में किए गए परिवर्तनों की तरह है)।" - क्या आपको इस टिप्पणी पर एक कोड नमूना / उदाहरण मिला है? ऐसे कोई ठोस उदाहरण नहीं हैं, जो मुझे
अर्नेस्ट

1
@TomHringrington प्रतिक्रिया के उस प्रकार के साथ भी क्यों stackoverflow है अगर हम सब करने की जरूरत है प्रलेखन की जाँच करें :(
अर्नेस्ट

14

IOS 13 के साथ, Apple ने CloudKit के साथ बेहतर काम करने के लिए Core Data में नई सुविधाओं की घोषणा की। मुख्य जोड़ NSPersistentCloudKitContainer है जो मूल रूप से आपके लिए Core Data और CloudKit के बीच सिंकिंग का प्रबंधन करता है।

आप क्लाउड डेटा के साथ कोर डेटा का उपयोग करके WWDC सत्र में अधिक जान सकते हैं ।

Apple ने इसके बहुत उपयोग के लिए डॉक्स का अच्छा संग्रह भी जारी किया: CloudKit के साथ कोर डेटा स्टोर को मिरर करना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.