Intereting Posts
एसपीपी प्रोफाइल ब्लूटूथ आईओएस UICollectionView स्क्रोलिंग धीमा है एक प्रोटोकॉल ऑपरेटर को वैश्विक फ़ंक्शन के रूप में क्यों लागू किया जाना चाहिए? ExternalAccessory.framework का उपयोग कर ब्लूटूथ डिवाइस की सूची कैसे प्राप्त करें I आईओएस – माइक्रो में ब्लॉ का पता लगाएं और परिणाम कन्वर्ट करें! (तेज) एंड्रॉइड अलार्म मैनेजर के समान आईओएस पृष्ठभूमि की प्रक्रिया IOS में कीबोर्ड पर UIView कैसे प्रदर्शित करें कैसे 'पहलू भरने' मोड में एक नया UIImage के लिए एक UIImageView फसल? उपयोगकर्ता की स्थापना रद्द आईओएस एप का पता लगाने के लिए कैसे? मुझे गंभीर सूचना की आवश्यकता है मैं इसे खोना नहीं चाहता स्विफ्ट कस्टम फ़ॉन्ट्स Xcode 7 Xcode का उपयोग कर एक बग ढूँढना – शून्य मान डालने का प्रयास क्यों मेरे ऐप को अस्वीकार कर दिया गया क्योंकि "मल्टीटास्किंग ऐप्स केवल पृष्ठभूमि का उपयोग कर सकते हैं"? क्या एसक्यूएलटी की वाल फाइल को हटाना सुरक्षित है? UIWebView, मोबाइल सफारी में स्पर्श की तरह स्पर्श को सक्षम करें SWRevealViewController- मैन्युअल रूप से दूसरे दृश्य पर स्विच करें?

iCloud: मैं उन लोगों की उपेक्षा कर सकता हूँ जो iCloud को अक्षम करते हैं?

मैं iCloud के विचार के साथ थोड़ा संघर्ष कर रहा हूं और यहां एक और सामान्य प्रश्न पोस्ट किया है । मेरी सबसे बड़ी समस्या यह तय करना है कि मुझे उपयोगकर्ता के डेटा को अच्छे पुराने दस्तावेज़ फ़ोल्डर में बंद करना चाहिए जो एप के सैंडबॉक्स में पाया जाता है। मेरी समस्या को स्पष्ट करने के लिए:

यहां छवि विवरण दर्ज करें

जहां तक ​​मैं देख सकता हूं, डॉक्स मेरे पास जवाब नहीं देते। मान लीजिए मेरे पास एक एप है जो अलग-अलग टेक्सटाइल फाइलों को संभालता है। एक बार जब मैं अपना ऐप प्रारंभ करता हूँ, तो मैं केवल जांच करता हूं कि क्या किसी भी टेक्सटाइल फ़ाइलें क्लाउड में हैं:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"AppDelegate: app did finish launching"); self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; // (1) iCloud: init NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; if (ubiq) { NSLog(@"User has iCloud enabled! Let's get the txt files from the cloud."); [self loadDocument]; } else { NSLog(@"User doesn't have iCloud enabled. App is thus worthless."); } return YES; } 

फिर मेरे पास यह देखने की एक विधि है कि क्या क्लाउड में कोई भी txt फ़ाइलें हैं और यदि हां, तो उन्हें लोड करें यदि नहीं, तो मैं बस क्लाउड में नई टेक्सटाइल फ़ाइलें बनाउंगा।

इसका मतलब यह है कि ऐप दस्तावेज़ फ़ोल्डर में किसी भी डेटा को संग्रहीत नहीं करता है। जहाँ तक मैं इसे समझता हूं, सब कुछ या तो मेरी डिवाइस के स्थानीय iCloud भंडारण में है (जो उपयोगकर्ता के ऑफ़लाइन होने पर भी पहुंच योग्य है) या क्लाउड में। इसलिए पाठ फ़ाइल दो स्थानों पर मौजूद है: मेरी डिवाइस और बादल पर

इसलिए मेरे स्थानीय दस्तावेज़ फ़ोल्डर में तीसरी कॉपी को स्टोर करने की कोई आवश्यकता नहीं है, है ना? या क्या किसी कारण के लिए यह अनदेखी है? दूसरे शब्दों में, अगर मैं अपने उपयोगकर्ताओं को iCloud प्रदान करता हूं तो मुझे स्थानीय दस्तावेज़ फ़ोल्डर का क्या उपयोग करना चाहिए? (और क्या मैं उन लोगों की अनदेखी कर सकता हूँ जो iCloud के लिए साइन अप नहीं करेंगे?)


संपादित करें: बस स्पष्ट करने के लिए, जब मैं ऐप के सैंडबॉक्स में मानक दस्तावेज़ फ़ोल्डर के बारे में बात कर रहा हूँ, मेरा मतलब यह है:

 NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; 

Solutions Collecting From Web of "iCloud: मैं उन लोगों की उपेक्षा कर सकता हूँ जो iCloud को अक्षम करते हैं?"

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

अद्यतन: यदि आप आईओएस 5 बनाम आईओएस 4 के लिए अलग-थलग करना चाहते हैं, तो आपको सिर्फ आईओएस 5 सुविधाओं का परीक्षण करने की आवश्यकता है। कई तरीके हैं जो आप ऐसा कर सकते हैं। एक तरह से जांचना है:

if ([UIDocument class] == nil)

IOS4 पर यह सच होगा, और iOS5 पर यह गलत होगा। मुझे नहीं पता कि आपकी फ़ाइलों के लिए आपके पास किस प्रकार के डेटास्ट्रक्चर हैं, लेकिन एक चीज जो आप कर सकते हैं वह यूआईडीकार्ड के आसपास एक आवरण बनाती है। इस आवरण वर्ग के अंदर, आपके पास आईआईएस 4 (जैसे फ़ाइल के पथ) में यूआईडीकास्ट संरचना के साथ-साथ फ़ील्ड के लिए उदाहरण चर हो सकते हैं। जब आप अपने क्लास को इन्स्तांत करते हैं, तो जांच करें कि क्या iCloud सक्षम है और अगर यूआईडीओट उपलब्ध है, और यदि ऐसा है, तो इसका इस्तेमाल करें और फील्ड सेट करें। अन्यथा, अन्य फ़ील्ड सेट करें और UIDocument फ़ील्ड को शून्य होने दें। जब आपको अपनी "फ़ाइल" पर परिचालन करने की आवश्यकता होती है, तो जांच लें कि यूआईडीओन्ट फ़ील्ड शून्य है, और अगर यह "पुराने" तरीके से किया जाता है तो अन्यथा, बस यूआईडीओटीन ऑब्जेक्ट के अनुरोध पर पास करें।

शायद मैं थोड़ी धीमी गति से, चौथे या पांचवें समय के लिए दस्तावेजों को फिर से पढ़कर, मुझे इस बात से पता चला कि आप हमेशा सैंडबॉक्स में अपनी फ़ाइलें बनाते हैं और फिर उन्हें क्लाउड पर ले जाते हैं। तो एक तरह से, ऐप्पल हमेशा एक ही फाइल के 3 संस्करणों का सुझाव देता है:

Apps iCloud में फ़ाइलों और निर्देशिकाओं का प्रबंधन करने के लिए समान तकनीकों का उपयोग करते हैं, जो वे स्थानीय फाइलों और निर्देशिकाओं के लिए करते हैं। ICloud में फ़ाइलें और निर्देशिका अभी भी सिर्फ फाइल और निर्देशिका हैं आप उन्हें खोल सकते हैं, उन्हें बना सकते हैं, उन्हें स्थानांतरित कर सकते हैं, उन्हें प्रतिलिपि बना सकते हैं, उनसे पढ़ सकते हैं और लिख सकते हैं, उन्हें हटा सकते हैं, या आप जो भी अन्य कार्य करना चाहते हैं स्थानीय फ़ाइलों और निर्देशिकाओं और iCloud फ़ाइलों और निर्देशिकाओं के बीच केवल अंतर उन URL का उपयोग करने के लिए उपयोग किया जाता है। आपके ऐप के सैंडबॉक्स के सापेक्ष यूआरएल होने के बजाय, iCloud फाइलों और निर्देशिकाओं के लिए URL संबंधित iCloud कंटेनर निर्देशिका के सापेक्ष हैं।

एक फाइल या निर्देशिका को iCloud पर ले जाने के लिए:

अपने ऐप सैंडबॉक्स में स्थानीय रूप से फ़ाइल या निर्देशिका बनाएं उपयोग में होने पर, फ़ाइल या निर्देशिका को फाइल प्रस्तोता द्वारा प्रबंधित किया जाना चाहिए, जैसे कि यूआईडीऑनट ऑब्जेक्ट

ICloud कंटेनर निर्देशिका के लिए एक URL पुनर्प्राप्त करने के लिए URLForUbiquityContainerIdentifier: विधि का उपयोग करें जिसमें आप आइटम को संग्रहीत करना चाहते हैं। एक नया यूआरएल बनाने के लिए कंटेनर डायरेक्टरी यूआरएल का उपयोग करें जो आइटम के स्थान को iCloud में निर्दिष्ट करता है। सेट सर्वव्यापी कॉल करें: itemAtURL: destinationURL: त्रुटि: आइटम को iCloud पर ले जाने के लिए NSFileManager की विधि कभी भी इस ऐप के मुख्य थ्रेड से इस विधि को कॉल न करें; ऐसा करने से आपके मुख्य थ्रेड को समय की विस्तारित अवधि के लिए अवरुद्ध कर दिया जा सकता है या आपके ऐप की अपनी फ़ाइल प्रस्तुतियों में से एक के साथ डेडलॉक का कारण हो सकता है जब आप एक फ़ाइल या डायरेक्टरी को iCloud पर ले जाते हैं, तो सिस्टम आपके आइटम से सैंडबॉक्स के बाहर और एक निजी स्थानीय निर्देशिका में उस आइटम की प्रतिलिपि बनाता है जिससे कि इसे iCloud डेमॉन द्वारा मॉनिटर किया जा सके। भले ही फ़ाइल अब आपके सैंडबॉक्स में न हो, आपके ऐप का अभी भी इसका पूर्ण एक्सेस है। यद्यपि फाइल की एक प्रतिलिपि वर्तमान डिवाइस पर स्थानीय रहता है, फाइल को iCloud पर भी भेजा जाता है ताकि इसे अन्य डिवाइसों पर वितरित किया जा सके। ICloud डेमॉन यह सुनिश्चित करने के सभी कामों को संभालता है कि स्थानीय प्रतियां एक समान हैं तो अपने ऐप के परिप्रेक्ष्य से, फ़ाइल बस iCloud में है

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

यहाँ देखें।

याद रखें कि यदि उपयोगकर्ता ने डिवाइस बैकअप को iCloud पर सक्षम किया है, तो दस्तावेज़ निर्देशिका को वैसे भी बैकअप लिया जाता है।

यह वास्तव में इस पर निर्भर करता है कि आपकी योजना iCloud को एप्लिकेशन / प्लेटफ़ॉर्म के बीच एक सिंक टूल के रूप में उपयोग करने पर निर्भर करती है। यदि आपका नहीं, तो यह वास्तव में आपके दस्तावेज़ों को स्टोर करने के लिए iCloud का उपयोग करने के लिए समझ में नहीं आता है।