आधिकारिक दस्तावेज़ क्लाउडकिट स्थिरता के बारे में कहीं बात करते हैं? मेरे परीक्षण के अनुसार यह अंततः संगत प्रतीत होता है - यह काम हो सकता है और नहीं भी हो सकता (खाली परिणाम देने) लेखन के तुरंत बाद एक रिकार्ड पढ़ने:क्या क्लाउडकिट दृढ़ता से संगत है, या अंततः संगत है?
CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Foo"];
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[database saveRecord:record completionHandler:^(CKRecord *record, NSError *error) {
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Foo" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
XCTAssertEqualObjects(results, @[], @"Freshly written object not returned by query."); // succeeds
dispatch_semaphore_signal(semaphore);
}];
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
वहाँ एक जोरदार लगातार पढ़ने कि सभी को प्रतिबिंबित करेगा मजबूर करने के लिए एक रास्ता है पिछले अपडेट?
मैं अपने परीक्षणों में एक ही चीज़ को देख रहा हूं। मैं एक रिकॉर्ड सहेज रहा हूं और इसके लिए सफलतापूर्वक पूरा करने का इंतजार कर रहा हूं। यदि मैं फिर सभी रिकॉर्ड के लिए एक क्वेरी करता हूं, तो मेरा नया रिकॉर्ड वापस नहीं किया जाता है। क्या आपको कोई जानकारी मिली है कि क्लाउडकिट अंततः संगत है? –
मेरा उपयोग मामला सौभाग्य से बहुत सरल था, इसलिए मैंने डेटास्टोर परत में एक प्रकार का कैश के साथ समस्या हल की: जब डेटा को डेटास्टोर में डाला जाता है, तो यह क्लाइंट पर थोड़ी देर के लिए संग्रहीत iCloud _and_ पर लिखा जाता है। और जब डेटास्टोर परत पूछताछ की जाती है, तो यह परिणाम सेट में रहने वाले कैश रिकॉर्ड जोड़ती है। बेवकूफ, लेकिन काम करता है। – zoul
@zoul कभी इसे संभालने का बेहतर तरीका ढूंढता है? संशोधित करने के लिए CKModifyRecordsOperation.h में इनलाइन टिप्पणी का अंतिम भाग RecordsCompletionBlock सुझाव देता है कि यह डिज़ाइन किया गया व्यवहार है: "** यह कॉल होता है जैसे ही सर्वर में सभी रिकॉर्ड परिवर्तन देखे जाते हैं, और सर्वर को संसाधित करते समय भी लागू किया जा सकता है उन परिवर्तनों के प्रभाव । ** " – George