2017-01-16 9 views
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) 

その結果、操作が正しく機能していません。期待どおりに他のブロックが呼び出されます。

ドキュメンテーションによると、トークンブロックはゾーンごとに呼び出される必要がありますが、まったく呼び出されません。

本当に助けていただければ幸いです。

多くのありがとうございます。

答えて

2

サーバー変更トークンが別のブロックに返されます。recordZoneFetchCompletionBlockを使用する必要があります。

+0

ありがとう@ChrisDeft:これは参考になりましたが、他の機能(recordZoneChangeTokensUpdatedBlock INSTEAD OF recordZoneFetchCompletionBlock) – LukeSideWalker

関連する問題