दिलचस्प पोस्ट
json_encode नल वापस आ रहा है? क्या मैं चुनिंदा तत्वों के लिए विकल्प में एचटीएमएल टैग का उपयोग कर सकता हूं? मैं setTimeout () कॉलबैक में एक पैरामीटर कैसे पास कर सकता हूं? जावा: setPreferredSize () के बीच अंतर और घटकों में SetSize () तरीकों क्या आप TR 24731 'सुरक्षित' फ़ंक्शन का उपयोग करते हैं? क्या जावा सरणियों का अधिकतम आकार है? जावा: चेक किए गए अनचेक अपवाद स्पष्टीकरण बनाम हम क्यों पीस स्क्रिप्ट में sys.setdefaultencoding ("utf-8") का उपयोग नहीं करना चाहिए? ईएल प्रस्ताव / स्वतः पूर्ण / कोड एक्लिप्स के साथ फेसलेट्स में सहायता करते हैं जावास्क्रिप्ट से एक सीएसएस नियम सेट बदलना कैसे जावा में 1200 से 1.2k के स्वरूपण के बारे में जाना उद्देश्य-सी और स्विफ्ट यूआरएल एन्कोडिंग इनलाइन फ़ंक्शन बनाम प्रीप्रोसेसर मैक्रोज़ मैं "हंगेरियन नोटेशन" का उपयोग क्यों नहीं करना चाहिए? स्थैतिक चर initialisation आदेश

iCloud मूल बातें और कोड नमूना

शुरुआत के रूप में, मैं iCloud के साथ संघर्ष कर रहा हूं। कुछ नमूने हैं, लेकिन वे आमतौर पर काफी विस्तृत हैं (डेवलपर फोरम पर iCloud और CoreData के लिए एक है जो कि बड़े पैमाने पर है)। सेब डॉक्स ठीक हैं, लेकिन मैं अब भी बड़ी तस्वीर नहीं देख सकता। तो कृपया मेरे साथ सहन करें, इनमें से कुछ प्रश्न काफी मौलिक हैं, लेकिन जवाब देने में संभवतः आसान है।

प्रसंग: मेरे पास एक बहुत ही सरल iCloud ऐप चल रहा है (नीचे पूर्ण नमूना कोड है) उपयोगकर्ता में दिखाए गए केवल एक UITextView और उसका इनपुट text.txt नामक फ़ाइल में सहेजा जाता है।

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

Txt फ़ाइल को क्लाउड पर धकेल दिया जाता है और सभी उपकरणों के लिए उपलब्ध कराया जाता है। पूरी तरह से काम करता है, लेकिन:

मुख्य समस्या: उन उपयोगकर्ताओं के बारे में क्या जो iCloud का उपयोग नहीं करते हैं?

जब मैं अपना ऐप लॉन्च करता हूं (नीचे कोड देखें), तो मैं जांचता हूं कि उपयोगकर्ता के पास iCloud सक्षम है। यदि iCloud सक्षम है, तो सब कुछ ठीक है। ऐप आगे जाता है और क्लाउड में text.txt के लिए दिखता है यदि मिल जाए, तो यह इसे लोड करेगा और उपयोगकर्ता को प्रदर्शित करेगा। यदि text.txt क्लाउड में नहीं मिला है, तो यह केवल एक नया text.txt बना देगा और उपयोगकर्ता को उस पर प्रदर्शित करेगा।

अगर उपयोगकर्ता में iCloud सक्षम नहीं है, तो कुछ भी नहीं होगा। मैं यह कैसे संभव बना सकता हूं कि गैर- iCloud उपयोगकर्ता अब भी मेरे टेक्स्ट ऐप के साथ काम कर सकते हैं? या मैं बस उन्हें अनदेखा करूँ? क्या मुझे गैर- iCloud उपयोगकर्ताओं के लिए अलग-अलग फ़ंक्शन लिखने की आवश्यकता होगी? Ie फ़ंक्शंस जिसमें मैं बस दस्तावेज़ फ़ोल्डर से text.txt लोड करता हूं?

सेब लिखते हैं :

ICloud में फ़ाइलों का इलाज उसी तरह से करें कि आप अपने ऐप सैंडबॉक्स में अन्य सभी फाइलों का इलाज करते हैं।

हालांकि, मेरे मामले में अब कोई 'सामान्य' ऐप सैंडबॉक्स नहीं है। यह बादल में है या मैं हमेशा पहली बार डिस्क से मेरी text.txt लोड और फिर कुछ अधिक अप-टू-डेट है, तो iCloud से जाँच करें?

संबंधित समस्या: फ़ाइल संरचना – सैंडबॉक्स बनाम क्लाउड

शायद मेरी मुख्य समस्या यह है कि कैसे iCloud काम करने के लिए माना जाता है की एक बुनियादी गलतफहमी है जब मैं एक यूआईडीऑनोक्यूम का एक नया उदाहरण बनाऊँगा, तो मुझे दो विधियों को अधिलेखित करना होगा सबसे पहले - (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError क्लाउड से फ़ाइलें प्राप्त करने के लिए और फिर -(id)contentsForType:(NSString *)typeName error:(NSError **)outError क्लाउड में फ़ाइलों को प्राप्त करने के लिए -(id)contentsForType:(NSString *)typeName error:(NSError **)outError

क्या मुझे अलग फ़ंक्शंस शामिल करना है जो मेरे सैंडबॉक्स में text.txt की स्थानीय प्रति भी बचाएगा? क्या यह गैर- iCloud उपयोगकर्ताओं के लिए काम करेगा? जैसा कि मैं iCloud समझता हूं, यह text.txt की एक स्थानीय प्रतिलिपि स्वचालित रूप से सहेज जाएगी। इसलिए मेरे ऐप के 'पुराने' सैंडबॉक्स में कुछ भी बचा मेरे लिए कोई ज़रूरत नहीं होनी चाहिए (यानी यह पुराने, प्री- iCloud दिनों में किया जाता था)। अभी, मेरा सैंडबॉक्स पूरी तरह से खाली है, लेकिन मुझे नहीं पता कि यह सही है। क्या मुझे वहां text.txt की एक और कॉपी रखना चाहिए? यह मेरे डेटा संरचना को अवकलित करने की तरह महसूस करता है … क्योंकि बादल में एक text.txt है, एक मेरी डिवाइस पर iCloud sandbox में (जो कि मैं ऑफ़लाइन हूं, फिर भी काम करेगा), और अच्छे पुराने सैंडबॉक्स में एक तिहाई मेरा ऐप …


मेरा कोड: एक सरल iCloud नमूना कोड

यह शिथिल तौर पर डेवलपर फ़ोरम और WWDC सत्र वीडियो में पाया गया उदाहरण के आधार पर है। मैंने इसे न्यूनतम नल में छीन लिया मुझे यकीन नहीं है कि मेरी MVC संरचना किसी भी अच्छा है मॉडल AppDelegate में है जो आदर्श नहीं है। इसे बेहतर बनाने के लिए किसी भी सुझाव का स्वागत है


संपादित करें: मैंने मुख्य प्रश्न निकालने का प्रयास किया और इसे पोस्ट किया [यहां]। 4


अवलोकन:

अवलोकन

सबसे महत्वपूर्ण बिट जो क्लाउड से text.txt लोड करता है:

 // AppDelegate.h // iCloudText #import <UIKit/UIKit.h> @class ViewController; @class MyTextDocument; @interface AppDelegate : UIResponder <UIApplicationDelegate> { NSMetadataQuery *_query; } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) ViewController *viewController; @property (strong, nonatomic) MyTextDocument *document; @end // AppDelegate.m // iCloudText #import "AppDelegate.h" #import "MyTextDocument.h" #import "ViewController.h" @implementation AppDelegate @synthesize window = _window; @synthesize viewController = _viewController; @synthesize document = _document; - (void)dealloc { [_window release]; [_viewController release]; [super dealloc]; } - (void)loadData:(NSMetadataQuery *)query { // (4) iCloud: the heart of the load mechanism: if texts was found, open it and put it into _document; if not create it an then put it into _document if ([query resultCount] == 1) { // found the file in iCloud NSMetadataItem *item = [query resultAtIndex:0]; NSURL *url = [item valueForAttribute:NSMetadataItemURLKey]; MyTextDocument *doc = [[MyTextDocument alloc] initWithFileURL:url]; //_document = doc; doc.delegate = self.viewController; self.viewController.document = doc; [doc openWithCompletionHandler:^(BOOL success) { if (success) { NSLog(@"AppDelegate: existing document opened from iCloud"); } else { NSLog(@"AppDelegate: existing document failed to open from iCloud"); } }]; } else { // Nothing in iCloud: create a container for file and give it URL NSLog(@"AppDelegate: ocument not found in iCloud."); NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:@"Documents"] URLByAppendingPathComponent:@"text.txt"]; MyTextDocument *doc = [[MyTextDocument alloc] initWithFileURL:ubiquitousPackage]; //_document = doc; doc.delegate = self.viewController; self.viewController.document = doc; [doc saveToURL:[doc fileURL] forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { NSLog(@"AppDelegate: new document save to iCloud"); [doc openWithCompletionHandler:^(BOOL success) { NSLog(@"AppDelegate: new document opened from iCloud"); }]; }]; } } - (void)queryDidFinishGathering:(NSNotification *)notification { // (3) if Query is finished, this will send the result (ie either it found our text.dat or it didn't) to the next function NSMetadataQuery *query = [notification object]; [query disableUpdates]; [query stopQuery]; [self loadData:query]; [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:query]; _query = nil; // we're done with it } -(void)loadDocument { // (2) iCloud query: Looks if there exists a file called text.txt in the cloud NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; _query = query; //SCOPE [query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]]; //PREDICATE NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K == %@", NSMetadataItemFSNameKey, @"text.txt"]; [query setPredicate:pred]; //FINISHED? [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query]; [query startQuery]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"AppDelegate: app did finish launching"); self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; } else { self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; } self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; // (1) iCloud: init NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; if (ubiq) { NSLog(@"AppDelegate: iCloud access!"); [self loadDocument]; } else { NSLog(@"AppDelegate: No iCloud access (either you are using simulator or, if you are on your phone, you should check settings"); } return YES; } @end 

यूआईडीकाउन्ट

 // MyTextDocument.h // iCloudText #import <Foundation/Foundation.h> #import "ViewController.h" @interface MyTextDocument : UIDocument { NSString *documentText; id delegate; } @property (nonatomic, retain) NSString *documentText; @property (nonatomic, assign) id delegate; @end // MyTextDocument.m // iCloudText #import "MyTextDocument.h" #import "ViewController.h" @implementation MyTextDocument @synthesize documentText = _text; @synthesize delegate = _delegate; // ** READING ** - (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError { NSLog(@"UIDocument: loadFromContents: state = %d, typeName=%@", self.documentState, typeName); if ([contents length] > 0) { self.documentText = [[NSString alloc] initWithBytes:[contents bytes] length:[contents length] encoding:NSUTF8StringEncoding]; } else { self.documentText = @""; } NSLog(@"UIDocument: Loaded the following text from the cloud: %@", self.documentText); // update textView in delegate... if ([_delegate respondsToSelector:@selector(noteDocumentContentsUpdated:)]) { [_delegate noteDocumentContentsUpdated:self]; } return YES; } // ** WRITING ** -(id)contentsForType:(NSString *)typeName error:(NSError **)outError { if ([self.documentText length] == 0) { self.documentText = @"New Note"; } NSLog(@"UIDocument: Will save the following text in the cloud: %@", self.documentText); return [NSData dataWithBytes:[self.documentText UTF8String] length:[self.documentText length]]; } @end 

विवेकंत्र्रोलर

 // // ViewController.h // iCloudText #import <UIKit/UIKit.h> @class MyTextDocument; @interface ViewController : UIViewController <UITextViewDelegate> { IBOutlet UITextView *textView; } @property (nonatomic, retain) UITextView *textView; @property (strong, nonatomic) MyTextDocument *document; -(void)noteDocumentContentsUpdated:(MyTextDocument *)noteDocument; @end // ViewController.m // iCloudText #import "ViewController.h" #import "MyTextDocument.h" @implementation ViewController @synthesize textView = _textView; @synthesize document = _document; -(IBAction)dismissKeyboard:(id)sender { [_textView resignFirstResponder]; } -(void)noteDocumentContentsUpdated:(MyTextDocument *)noteDocument { NSLog(@"VC: noteDocumentsUpdated"); _textView.text = noteDocument.documentText; } -(void)textViewDidChange:(UITextView *)theTextView { NSLog(@"VC: textViewDidChange"); _document.documentText = theTextView.text; [_document updateChangeCount:UIDocumentChangeDone]; } 

वेब के समाधान से एकत्रित समाधान "iCloud मूल बातें और कोड नमूना"

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

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

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

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

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

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

हालांकि, यदि आप setUbiquitous से संबंधित डॉक्स में थोड़ा गहरा खोदते हैं, तो आप पाएंगे:

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

इसलिए इसका अर्थ यह दिखता है कि एक फ़ाइल / निर्देशिका हटाई जाती है, स्थानीय सैन्डबॉक्स बना देता है और क्लाउड में चले जाते हैं।

मैं आपके उदाहरण का उपयोग कर रहा हूं और मुझे यह पसंद है कि मैं iCloud की मूल बातें समझ सकूं। अब मैं अपने खुद के ऐप के लिए अपने प्रश्न से परेशान हूँ, जिसकी जगह स्थानीय रूप से संग्रहित सामग्री के साथ ऐप के मौजूदा उपयोगकर्ताओं को समर्थन देना है जो कि इन मामलों को तब तक बना सकता है, जब तक मैं यह बता सकता हूं:

मामले:

  1. नया उपयोगकर्ता
    • आईक्लॉड है – आईक्लॉड में दस्तावेज बनाएं
    • कोई आईसीएलडॉड – स्थानीय रूप से दस्तावेज बनायें
  2. मौजूदा उपयोगकर्ता
    • आईकॉलाइड है
      • अभी जोड़ा – स्थानीय डॉक्स को आईक्लौड में स्थानांतरित करें
      • न सिर्फ जोड़ा – ओपन / डॉक्स टू आईसीएलॉड
    • नहीं icloud
      • बस हटाए गए – पूर्व आईसीडब्ल्यूड डॉक्स को स्थानीय में माइग्रेट करें
      • न सिर्फ हटाए गए – स्थानीय को डॉक्स खोलें / बचाएं

अगर कोई iCloud को निकालता है – सर्वव्यापी यूआरएल वापसी शून्य के लिए कॉल नहीं होगा? अगर ऐसा है तो मैं डॉक्स को स्थानीय संग्रहण में कैसे स्थानांतरित कर सकता हूं? मैं अब के लिए एक यूजर प्रीफ बनाऊँगा लेकिन एक वैकल्पिक हल का एक छोटा सा लगता है।

मुझे लगता है कि मुझे कुछ स्पष्ट है, इसलिए यदि कोई इसे देख सकता है, तो कृपया में

यदि आप चाहते हैं कि उपयोगकर्ता iOS 5.0 के पूर्व के डिवाइसों के बीच पाठ साझा करने में सक्षम हों, तो आपको iCloud से पहले जो करना था और अपने खुद के सर्वर से जानकारी ले जाने के लिए किया गया है।

आप सभी को वास्तव में ज़रूरत है कहीं एक सर्वर है जो आपके ऐप को अपनी पाठ फ़ाइलों को सहेजता है और उन्हें उपयोगकर्ता खाते से जोड़ता है।

आपको एक खाता बनाने के लिए उपयोगकर्ताओं की ज़रूरत होगी और आपको एक ही डिवाइस पर अपनी स्वयं की 'क्लाउड' में नई जानकारी ले जाने की प्रक्रिया खुद को प्रबंधित करने की आवश्यकता होगी।

उपयोगकर्ता अन्य उपकरणों पर एक ही खाते से पंजीकृत होंगे और आपको पता लगाना होगा कि किसी अन्य डिवाइस ने अपने बादल पर डेटा स्थानांतरित किया है, और नई जानकारी के साथ वर्तमान डिवाइस को अपडेट करने की आवश्यकता होगी।

जाहिर है, IOS 5.0 उपकरणों के लिए, आप शायद अपने स्वयं के क्लाउड में पूर्व-आईओएस 5.0 उपकरणों के लिए बदली हुई फाइलों का पता लगा सकते हैं, और iCloud से बात करने में सक्षम होंगे।

ऐसा प्रतीत नहीं होता है कि आप एक iCloud / notICloud समस्या के साथ संघर्ष कर रहे हैं जितना iOS5 / notIOS5 समस्या।

यदि आपका परिनियोजन लक्ष्य आईओएस 5 है, तो बस हमेशा यूआईडीओका संरचना का उपयोग करें। यदि यह सर्वव्यापी है, तो आपके NSMetaDataQuery को क्लाउड में मिल जाएगा; यदि नहीं, तो इसे डिवाइस पर मिलेगा।

अगर, दूसरी ओर, आप अपने ऐप के लिए पूर्व 5.0 पहुंच प्रदान करना चाहते हैं, तो आपको यह देखने के लिए सशर्त रूप से जांच की आवश्यकता होगी कि क्या चल रहे आईओएस 5.0 या अधिक है। यदि यह यूआईडीओका उपयोग करता है; अगर नहीं तो डेटा को पुराने तरीके से पढ़ा / लिखना।

मेरा दृष्टिकोण एक सशर्त बचत डेटा विधि लिखना था जो iOS5 के लिए जांच करता है अगर यह मौजूद है तो मैं परिवर्तन गिनती (या पूर्ववत प्रबंधक का उपयोग) अद्यतन करता हूं। आपके मामले में textViewDidChange इस विधि को कॉल करेगा यदि नहीं, तो यह डिस्क को पुराने तरीके से बचाता है लोड होने पर, विपरीत होता है

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

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