2013-04-23 10 views
8

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

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.developer.ubiquity-kvstore-identifier</key> 
    <string>$(TeamIdentifierPrefix)com.companyname.MyApp</string> 
    <key>get-task-allow</key> 
    <true/> 
    <key>keychain-access-groups</key> 
    <array> 
      <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> 
    </array> 
</dict> 
</plist> 

अनुसार:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>get-task-allow</key> 
    <true/> 
    <key>com.apple.developer.ubiquity-kvstore-identifier</key> 
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> 
    <key>keychain-access-groups</key> 
    <array> 
      <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> 
    </array> 
</dict> 
</plist> 

के तहत "एक से अधिक एप्लिकेशन के लिए आम कुंजी-मान संग्रहण का विन्यास" http://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html पर निर्देशों का पालन करने के बाद, यहाँ क्या मेरी वी 2 हकों फ़ाइल लग रहा है की तरह है दस्तावेज़ों के लिए, v2 को उसी कुंजी-मान संग्रहण से v1 के रूप में पढ़ना चाहिए। हालांकि, एक साधारण परीक्षण करते समय, यह विफल रहता है। यहां बताया गया है कि मैं कैसे पुनरुत्पादन करता हूं।

  1. ओपन मायएप 1.0। कुंजी-मूल्य स्टोर में "InstalledVersion1" कुंजी के लिए "हाँ" का एक बूल मान लिखें।

    NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; 
    [store setBool:YES forKey:@"InstalledVersion1"]; 
    
  2. ओपन MyApp 2.0 और स्टोर से यह मान पढ़ें।

    NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; 
    [store synchronize]; 
    NSLog(@"%@", [store dictionaryRepresentation]); 
    

यह {} प्रिंट करता है।

यह { "InstalledVersion1" = 1; }

की तरह कुछ प्रिंट करना चाहिए ... लेकिन यह नहीं है।

मैं क्या गलत कर रहा हूं? क्या स्टोर को सिंक्रनाइज़ करने के लिए मुझे थोड़ा और धीरज रखने की ज़रूरत है?

यदि आप रुचि रखते हैं तो डिवाइस लॉग: https://gist.github.com/dlo/688f187c75fd1b1fdc78 (डीबगर में p (void)[[NSUbiquitousKeyValueStore defaultStore] _printDebugDescription] चलाने के बाद)।

उत्तर

4

उत्तर हास्यास्पद है, लेकिन यहां यह किसी अन्य मुद्दे के समान किसी अन्य मुद्दे के लिए जाता है।

यहां मैंने जो किया है।

  1. मेरे पास सामान्य दस्तावेज़ नामक मेरे आईक्लाउड स्टोरेज में एक प्रविष्टि थी। मैंने इसे मिटा दिया।
  2. मैंने सेलुलर डेटा पर iCloud दस्तावेज़ स्थानांतरण चालू कर दिया।

सबकुछ करने की तीन दिनों के बाद, यह पता चला है कि iCloud संग्रहण और प्रतीत होता है कि असंबद्ध सेटिंग में एक अस्पष्ट वस्तु समस्या को हल करती है।

यदि ये दो चीजें आपके लिए नहीं करती हैं, तो मैं आपको शुभकामनाएं देता हूं। गॉडस्पीडः।

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