2015-04-08 6 views
14

मैं मैजिकल रिकार्ड फ्रेमवर्क के साथ प्रबंधित डेटा के लिए iCloud समर्थन को सक्षम करने के लिए सभी अंतिम दिनों में संघर्ष कर रहा था।MagicalRecord (कोर डेटा) के साथ iCloud कैसे प्राप्त करें और चल रहे हैं?

मैंने प्रोविजनिंग प्रोफाइल और एक्सकोड में सभी सेटअप के संबंध में सबकुछ किया। बजाय कोड

[MagicalRecord setupAutoMigratingCoreDataStack]; 

बुला में मैं

[MagicalRecord setupCoreDataStackWithiCloudContainer:@"AppIDFromiTunesConnect.com.companyName.myAppName" localStoreNamed:@"whatever"]; 

मैं iPhone सिम्युलेटर पर iCloud तुल्यकालन ट्रिगर द्वारा सिंक्रनाइज़ अनुकरण करने की कोशिश फोन कर रहा हूँ। लेकिन ऐसा कुछ नहीं लगता है। मैं developer.iCloud.com पर कुछ भी नहीं देख सकता।

प्रश्न: किसी को iCloud MagicalRecord के साथ और चल रहा है? क्या आप कृपया यह समझाएंगे कि इसे कैसे किया जाए?

+1

क्या आपने आईफोन सिम्युलेटर (सेटिंग्स मेनू में) पर अपने iCloud खाते में लॉगिन करने का प्रयास किया है? – ninjaproger

+0

हां, ज़ाहिर है :) –

+0

मेरे पास कोड का एक गुच्छा है जो मुझे कंसोल में बताता है कि iCloud सक्षम है या नहीं। तो अगर मैकिकल रिकार्ड फ्रेमवर्क के बाहर iCloud ठीक से सेट नहीं किया गया है तो मुझे त्रुटि संदेश मिलता है। अब मुझे कोई त्रुटि नहीं है, इसलिए सब कुछ काम करना चाहिए लेकिन यह –

उत्तर

6

ठीक है दोस्तों, मुझे लगता है कि मुझे यह काम मिल गया है।

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

मैं बस अपना खुद का परीक्षण ऐप को मैं 2 साल पहले लिखा था, कि कोई CoreData है और न ही iCloud था pimped और यह अच्छा काम करने के लिए लगता है। यह मेरे आईफोन और आईफोन सिम्युलेटर में डेटाबेस को सिंक करता है। मुझे एक छोटी सी चीज़ जो मुझे नट्स चलाती है वह है कि मुझे अभी भी https://developer.icloud.com पर कुछ भी दिखाई नहीं दे रहा है ..

अब मैं अपने वितरित ऐप के लिए ऐसा करने जा रहा हूं। यहाँ मैं वास्तव में क्या किया है:

  1. का और सामान के बारे में अच्छी बात यह है कि आप लगभग डेवलपर पोर्टल पर कुछ भी नहीं है (जैसे बना सकते हैं और प्रोफ़ाइल प्रावधान डाउनलोड, यहां तक ​​कि बनाने एप्लिकेशन आईडी की जरूरत नहीं है कि है आवश्यक नहीं है) - एक्सकोड 6.3.2 यह सब आपके लिए करता है; यदि आप निश्चित रूप से आदेश जानते हैं। तो सबसे पहले, अपने लक्ष्य की सेटिंग्स पर जाएं -> क्षमताओं, और iCloud सक्षम करें। एक्सकोड एंटरटाइमेंट्स फ़ाइल जोड़ने, डेवलपर पोर्टल पर ऐप आईडी बनाने और आईक्लाउड कंटेनर बनाने का काम करता है। "कुंजी-मूल्य संग्रहण" अनचेक करें और "iCloud दस्तावेज़" की जांच करें।

Enabling iCloud in XCode

  1. मैं के रूप में निम्नलिखित आप MagicalRecord और आप सेटअप अपने कोर डाटा ढेर का उपयोग कर रहे मान:

[MagicalRecord setupAutoMigratingCoreDataStack];

इस मामले में MagicalRecord एक स्थानीय स्टोर बनाता है जिसका नाम आप [MagicalRecord defaultStoreName] पर कॉल करके प्राप्त कर सकते हैं। आपको iCloud सेटअप कॉल में इसे एक को बताना होगा। तो कोड मैं अभी AppDelegate.m में है:

NSString *defaultStoreName = [MagicalRecord defaultStoreName]; 
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"Container ID from Developer Portal (as on image)" 
             contentNameKey:@"DataStorage" // It seems like you can write whatever you want here 
            localStoreNamed:defaultStoreName // Unless not specifically named earlier 
          cloudStorePathComponent:@"stuff"]; // Seems like you can write whatever stuff you want. 

इस विधि मेरे लिए काम किया। दूसरा, छोटा iCloud सेटअप कॉलिंग विधि (ContentNameKey के बिना) कोई अपवाद नहीं फेंक रहा था, लेकिन ठीक से काम नहीं किया। मुझे लगता है, आपको बस ContentNameKey बताना होगा।

यहां वह जगह है जहां आप डेवलपर पोर्टल पर कंटेनर आईडी प्राप्त करते हैं। मुझे पता है, यह एक बहुत ही विस्तृत निर्देशों की तरह लगता है, लेकिन मेरी इच्छा है कि यह मेरे लिए इतना स्पष्ट था कि उपरोक्त फ़ंक्शन में "iCloudContainer" स्ट्रिंग वास्तव में iCloudContainerID है और इसे डेवलपर पोर्टल से पुनर्प्राप्त किया जाना चाहिए। Container ID

    डिवाइस सेटिंग पर
  1. जाओ -> iCloud ->iCloud ड्राइव और इसे सक्षम करें। अपने खाते के साथ iCloud में लॉग इन करें। काम करने के लिए पूरी चीज के लिए यह महत्वपूर्ण है।

iCloud Settings on the Device

  1. अब कम से कम सिम्युलेटर पर अनुप्रयोग चलाने के लिए प्रयास करें। यदि आपके पास लॉग में "iCloud सक्षम नहीं है" संदेश नहीं मिला है, तो आप आधे रास्ते पर हैं।

  2. रजिस्टर उद्देश्य यह है कि जिम्मेदार है सभी कोर डाटा कार्यों निम्न इवेंट पर NotificationCenter को सुनने के लिए के लिए: NSPersistentStoreCoordinatorStoresWillChangeNotification NSPersistentStoreCoordinatorStoresDidChangeNotification NSPersistentStoreDidImportUbiquitousContentChangesNotification

इस तरह:

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(storesWillChange:) 
       name:NSPersistentStoreCoordinatorStoresWillChangeNotification 
      object:nil]; 

और संभाल सही ढंग से परिवर्तन।

कठिन काम अभी तक किया जाना बाकी है और अब यह आपके प्रोजेक्ट पर निर्भर करता है और मैं आपको व्यक्तिगत रूप से कोई सलाह नहीं दे सकता।

मेरे लिए समस्या आई थी:

  • कैसे दूरस्थ दुकान में बदलाव पर प्रतिक्रिया करने के लिए
  • अलग डेटा मर्ज और डुप्लिकेट
  • कैसे पूरा डेटा हानि से बचने के लिए अगर iCloud कंटेनर खाली है से बचने के लिए कैसे

लेकिन मुझे official Apple Manual to iCloud में मेरे प्रश्नों के सभी उत्तर मिलेंगे।

मुझे आपके लिए कुछ दिनों के सिरदर्द से बचने में खुशी हुई है! अगर यह समाधान आपकी परियोजना के लिए काम करता है तो कृपया एक टिप्पणी लिखें!


0

आपने जो किया है वह सही है हालांकि जांच करने के लिए कुछ चीजें हैं।

  • सुनिश्चित करें कि आपके पास अपनी प्रावधान प्रोफ़ाइल सही तरीके से स्थापित है।
  • किसी भी वर्तनी की गलतियों के लिए अपनी प्रोफ़ाइल स्ट्रिंग जांचें।
  • सुनिश्चित करें कि आपने अपनी नई प्रावधान प्रोफ़ाइल डाउनलोड और स्थापित की है।
  • वर्तनी की गलतियों के लिए अपना स्थानीय स्टोर नाम देखें।
+0

हाय बीऊ यंग, ​​उत्तर देने के लिए धन्यवाद, मैं बाद में इसका परीक्षण करने जा रहा हूं। क्या आप इसे अच्छी तरह से काम कर रहे हैं? –

+0

मैंने इसे बाहर खींच लिया और इसे कठिन तरीके से करने और सीधे कोर डेटा का उपयोग करने का फैसला किया। जल्द ही मैं पुनः लिख रहा हूं और इस https://realm.io –

+0

में जा रहा हूं धन्यवाद @ बेउ यंग realm.io का सुझाव देने के लिए, एक महान पुस्तकालय की तरह लगता है और पूरी तरह से मुक्त है। हालांकि, मुझे सिंकिंग कार्यक्षमता कहीं भी नहीं मिला, यह इस क्रॉस-प्लेटफॉर्म डेटाबेस के लिए एक हत्यारा सुविधा होगी। –

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