官方文档是否在某处谈论 CloudKit 一致性?根据我的测试,它似乎最终是一致的——在写入后立即读取记录可能有效,也可能无效(返回空结果):
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);
有没有办法强制进行反映所有先前更新的强一致读取?