1
CloudKitとの同期を実装しようとしています。 サーバーから変更をフェッチするには、私はCKFetchRecordZoneChangesOperationを使用しています。 しかし、recordZoneChangeTokensUpdatedBlockはまったく呼び出されませんでした。 コードは次のとおりです。CloudKit。 CKFetchRecordZoneChangesOperationのトークン変更ブロックが呼び出されない
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)
その結果、操作が正しく機能していません。期待どおりに他のブロックが呼び出されます。
ドキュメンテーションによると、トークンブロックはゾーンごとに呼び出される必要がありますが、まったく呼び出されません。
本当に助けていただければ幸いです。
多くのありがとうございます。
ありがとう@ChrisDeft:これは参考になりましたが、他の機能(recordZoneChangeTokensUpdatedBlock INSTEAD OF recordZoneFetchCompletionBlock) – LukeSideWalker