ios - 云套件。未调用 CKFetchRecordZoneChangesOperation 的 token 更改 block

标签 ios swift icloud cloudkit

我正在尝试实现与 CloudKit 的同步。 要从服务器获取更改,我正在使用 CKFetchRecordZoneChangesOperation。 然而,根本没有调用 recordZoneChangeTokensUpdatedBlock。 这是代码:

let options = CKFetchRecordZoneChangesOptions()
options.previousServerChangeToken = changesToken

let operation = CKFetchRecordZoneChangesOperation(recordZoneIDs: [paletteZoneId], optionsByRecordZoneID: [paletteZoneId:options])
operation.fetchAllChanges = true

operation.recordChangedBlock = {(record) in
   ...
}

operation.recordWithIDWasDeletedBlock = { (recordId,str) in
    ...
}

operation.recordZoneChangeTokensUpdatedBlock = { recordZoneId, token, data in
    print("new token")
    self.changesToken = token
}


operation.fetchRecordZoneChangesCompletionBlock = { error in
    ...
}

privateDB.add(operation)

因此结果操作无法正常工作。其他 block 按预期调用。

文档说应该为每个区域调用 token block ,但它根本没有被调用。

如果有任何帮助,我将不胜感激。

非常感谢。

最佳答案

服务器更改 token 在不同的 block 中返回 - 您需要使用 recordZoneFetchCompletionBlock。

关于ios - 云套件。未调用 CKFetchRecordZoneChangesOperation 的 token 更改 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684749/

相关文章:

persistence - 使用 iCloud 共享 plist 文件

iphone - UIDatePicker setMinimumDate 和 setMaximumDate 设置为空

ios - Swift:从DropBox下载图像

ios - 如何在 FSCalendar 中自定义单元格?

flutter - 无需登录即可跨设备云数据存储(iCloud、CloudKit)

ios - SSKeychain:帐户未存储在 iCloud 中?

javascript - Cordova - 已弃用尝试访问非导航器对象上的属性 'userAgent'

iOS std::length_error::~length_error() 崩溃

ios - UITextField Xcode 的圆角

ios - Google Maps Swift,自定义标记和带箭头的信息窗口