2013-02-19 6 views
6

मेरे पास एक ऐप है जो iCloud का उपयोग करने के लिए कॉन्फ़िगर किया गया है। मैं NSUbiquitousKeyValueStore में एक कुंजी/मान जोड़ रहा हूं और मैं इसे अपने सभी उपकरणों में अपेक्षित के रूप में पुनर्प्राप्त कर सकता हूं। हालांकि, अगर मैं सेटिंग्स के तहत से अपने ऐप के iCloud डेटा को हटा देता हूं, तो मैं उम्मीद करता हूं कि मैं NSUbiquitousKeyValueStore में जोड़े गए सभी iCloud डेटा को भी हटा दिया जाएगा, लेकिन ऐसा नहीं है। मैं सभी डेटा पुनर्प्राप्त करने में सक्षम हूं, भले ही मैं iCloud को सिंक करने के लिए कितना समय चाहूं।iCloud डेटा को हटाने से NSUbiquitousKeyValueStore को साफ़ नहीं किया जाता है?

मैं developer.icloud.com पर गया हूं और अपने अन्य आईक्लाउड डेटा (मैं iCloud पर कोर डेटा का उपयोग भी कर रहा हूं) के रूप में देखा गया है, लेकिन यह कोई फ़ोल्डर नहीं है जहां NSUbiquitousKeyValueStore जो डेटा मैं बता सकता हूं उससे अपना डेटा रखता है।

क्या किसी को पता है कि यह हटाया जाना चाहिए या नहीं? ऐसा लगता है कि यदि उपयोगकर्ता इसे हटा नहीं सकता है तो यह "क्लाउड मेमोरी रिसाव" जैसा लगता है।

उत्तर

6

यह कैसे मैं यह कर रहा है:

NSUbiquitousKeyValueStore *kvStore = [NSUbiquitousKeyValueStore defaultStore]; 
NSDictionary *kvd = [kvStore dictionaryRepresentation]; 
NSArray *arr = [kvd allKeys]; 
for (int i=0; i < arr.count; i++){ 
    NSString *key = [arr objectAtIndex:i]; 
    [kvStore removeObjectForKey:key]; 
} 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मैं सोच नहीं रहा कि मूल्यों को मैन्युअल रूप से कैसे हटाएं - वह हिस्सा स्पष्ट है। मैं यह देखने की कोशिश कर रहा हूं कि उपयोगकर्ता इस डेटा को हटाने के लिए एक तरीका है या नहीं। मैं सर्वव्यापी स्टोर में एक मूल्य से बाहर निकल रहा था यह बताने के लिए कि क्या मैंने पहले से कुछ सेट अप किया है और यदि कोई उपयोगकर्ता अपने आईक्लाउड डेटा को हटा देता है तो मैं ऑपरेशन को फिर से चलाने के लिए चाहता हूं। लेकिन, यदि उपयोगकर्ता के पास अपने डेटा को हटाने का कोई तरीका है तो यह विधि काम नहीं कर सकती है। – lehn0058

+0

ओह, ठीक है।यह निर्धारित करने के लिए कि क्या मूल डेटा फ़ाइल अभी भी –

+0

है, यह जानने के लिए आप एक NSMetadataQuery का उपयोग कर सकते हैं, हाँ, मुझे पता होना चाहिए कि क्या एक विशिष्ट डिवाइस स्थापित किया गया है, न कि लेनदेन लॉग वहां हैं। मुझे लगता है कि मैं अपने स्वयं के NSUbiquityKeyValueStore को सर्वव्यापी कंटेनर और फ़ाइलों का उपयोग करके लागू करने जा रहा हूं। इस तरह जब मान उपयोगकर्ता iCloud डेटा हटा देता है तो मूल्य निश्चित रूप से हटा दिए जाएंगे। – lehn0058

2

हटाया जा रहा है iCloud "दस्तावेजों और डेटा" बस किसी भी दस्तावेज और कोर डेटा हटा देता है। यह NSUbiquitousKeyValueStore में कुछ भी नहीं हटाता है। मेरी उम्मीद थी कि यह ऐप के बारे में सबकुछ हटा देगा।

iCloud समर्थन जोड़ने से पहले, मैं ऐप के लिए डेटा के छोटे टुकड़ों को स्टोर करने के लिए NSUserDefaults का उपयोग कर रहा था। उदाहरण के लिए, अंतिम उपयोगकर्ता अपना नाम और पता दर्ज कर सकता है, और मैं इसे NSUserDefaults में संग्रहीत करता हूं। यह जटिल डेटा नहीं है, और मुझे इसे स्टोर करने के लिए कोर डेटा या एक फ्लैट फ़ाइल का उपयोग करने की आवश्यकता नहीं है। इसे वहां स्टोर करना बहुत आसान है और यह काम करता है। अगर मैंने फोन से ऐप हटा दिया है, तो वह जानकारी चली जाएगी, जो मैं उम्मीद करता हूं। जब मैंने iCloud समर्थन जोड़ा, तो मैंने इसे NSUbiquitousKeyValueStore में रखा। हालांकि, अगर मैं ऐप हटा देता हूं, और फिर "दस्तावेज़ और डेटा" हटा देता हूं, तो अंतिम उपयोगकर्ता नाम और पता अभी भी है।

मैंने सोचा कि मैं कुछ गलत कर रहा था। शोध करने वाले दिन के बेहतर हिस्से के बाद, मैंने पाया कि iCloud कुंजी-मान संग्रहण "अलग" डेटा के लिए होना चाहिए और "iCloud कुंजी-मान डेटा स्टोर ऐसा कुछ नहीं है जिसे उपयोगकर्ता देखेंगे।"

इसलिए, जब यह गैर-जटिल उपयोगकर्ता डेटा को संग्रहीत करने में पूरी तरह सक्षम है, तो अंतिम उपयोगकर्ता वास्तव में देखता है, यह इच्छित उपयोग नहीं है। मैं जो "गलत" कर रहा हूं वह गैर-इच्छित उपयोग के लिए इसका उपयोग कर रहा है, हालांकि यह उस उपयोग के लिए अच्छा काम करता है।

मुझे यकीन नहीं है कि ऐप्पल iCloud से सब कुछ क्यों नहीं हटाएगा। या कम से कम उपयोगकर्ता को क्षमता प्रदान करते हैं।

1

यह सही है कि NSUbiquitousKeyValueStore ऐप हटाने के बाद बनी हुई है। हटाने के पल में, डिवाइस यह नहीं जानता कि आपके अन्य डिवाइस अभी भी साझा डेटा चाहते हैं या नहीं।

आप स्टोर करने के लिए यह प्रयोग करेंगे एक इन-ऐप खरीदारी की स्थिति, उपयोगकर्ता विवरण आदि आप उपकरणों के बीच साझा करने के लिए, और बहाल करता है, तो अनुप्रयोग गलती से नष्ट कर दिया गया चाहते हैं कि (या की स्थापना रद्द करें, फिर बाद में पुनर्स्थापित किया)

दूसरी तरफ, NSUserDefaults, उस डिवाइस पर ऐप से संबंधित डेटा है, इसलिए ऐप को हटाने से डेटा को हटाना चाहिए।

+0

तो NSUbiquitousKeyValueStore को कब हटा दिया जाता है? निश्चित रूप से यह केवल उन ऐप्स के लिए ढेर नहीं होता है जिनका उपयोग अब और नहीं किया जा सकता है। क्या किसी उपयोगकर्ता को किसी बिंदु पर इसे हटाने के लिए मजबूर करना संभव नहीं है? –

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