CKSyncer 1.0.1

CKSyncer 1.0.1

Maintained by Dmitry.



CKSyncer 1.0.1

  • By
  • Dmitry

CKSyncer

CI Status Version License Platform

Example

  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
      })
  }

Requirements

Installation

CKSyncer is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'CKSyncer'

Author

Dmitry, [email protected]

License

CKSyncer is available under the MIT license. See the LICENSE file for more info.