ios - cloudKit:公共(public)数据库中的CKFetchRecordChangesOperation

标签 ios xcode6 cloudkit ckfetchrecordchangesopera ckfetchnotificationchange

我使用 cloudKit 构建了一个 iOS 应用程序。我正在尝试批量获取 cloudKit 中的数据,以获取设备和 cloudKit 之间的增量,但 CKFetchRecordChangesOperation 似乎在公共(public)数据库中不起作用。我唯一的选择是 CKQuery 来获取我的数据吗?例如:

 CKContainer *container = [CKContainer containerWithIdentifier:containerID];
    CKDatabase *publicDatabase = [container publicCloudDatabase];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType
                                               predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
     CKQueryOperation *queryOp = [[CKQueryOperation alloc] initWithQuery:query];
    queryOp.desiredKeys = @[@"record.recordID.recordName"];
    queryOp.recordFetchedBlock = ^(CKRecord *record)
    {
        // do something...
    };

     queryOp.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *error)
    {
        // do something else...
    };

    queryOp.resultsLimit = CKQueryOperationMaximumResults;
    [publicDatabase addOperation:queryOp];

非常感谢您的帮助。

最佳答案

CKFetchRecordChangesOperation 的苹果文档指出:

recordZoneID : The zone containing the records you want to fetch. The zone can be a custom zone. Syncing the default zone is not supported.

这意味着它不能在公共(public)数据库上运行,因为它只支持默认区域。

实现相同功能的正确方法是为您需要的数据创建订阅并使用 CKFetchNotificationChangesOperation 检索该数据。当然,您也可以只执行一些 CKQuery 命令,但这样您可能会经常获取不需要的数据或执行不需要的查询。

关于ios - cloudKit:公共(public)数据库中的CKFetchRecordChangesOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394714/

相关文章:

ios - 如何在主线程上调用更新

objective-c - 找不到 xcode 6 pch.file

ios - iOS 8.0 中的 UISearchBar barTintColor clearColor 错误

ios - 遇到 CKSubscription 错误 : "Cannot create or modify field ' notif_num_subtitle_loc_args'"

ios - 用户可以在 CloudKit 中编辑自己的私有(private)数据吗

iphone - GPUImageAlphaBlendFilter-在一个图像上合并两个图像

ios - 如何将文件添加到 Xcode 9 中的项目?

ios - Swift/NSURLSession JSON 下载/在展开可选值时意外发现 nil

debugging - 数组为空时如何触发中断?

swift - iOS 8 : being notified of CKRecord changes via subscriptions