2017-01-16 7 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 대신 recordZoneFetchCompletionBlock)이 유용했습니다. – LukeSideWalker