CKSyncer
示例
let container = CKContainer.default()
let changeTokenProvider = UserDefaultsServerChangeTokenProvider()
let syncer = CKSyncer(container: container,
database: container.privateCloudDatabase,
recordZone: CKRecordZone.default(),
tokenProvider: changeTokenProvider)
//getting CloudKit account status
syncer.getCloudKitStatus { (status, error) in
if let available = status, available == true {
//CloudKit is avaiable and can be used for data sync
}
}
//fetching remote changes using CKServerChangeToken managed by changeTokenProvider
syncer.applyRemoteChanges({ (createdOrUpdatedRecords, deletedRecordsIdentifiers) -> Bool in
createdOrUpdatedRecords.forEach({
let record:CKRecord = $0
//TODO: create or update local record using given CKRecord
})
deletedRecordsIdentifiers.forEach({
let recordType = $0.0
let remoteRecordID = $0.1
//TODO: delete record matching remote type and record ID
})
//return true if you're sure that all data persisted
//in only that case, change token will be saved by token provider to use on next fetch
return true
}) { (_) in
//handle error
}
//Applying local changes to CloudKit database
var localChanges = LocalChanges()
//TODO: update local changes object with created, updated and deleted objects
// localChanges.createdObjects = ...
// localChanges.updatedObjects = ...
// localChanges.deletedObjects = ...
syncer.applyLocalChanges(localChanges) { (savedRecords, deletedRecordIDs, error) in
savedRecords?.forEach({
let savedRecord:CKRecord = $0
//TODO: mark matching local record as synced
})
deletedRecordIDs?.forEach({
let deletedRecordID:CKRecordID = $0
//TODO: delete matching local record
})
}
要求
安装
CKSyncer可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中
pod 'CKSyncer'
作者
Dmitry, [email protected]
许可证
CKSyncer 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。