Don't complain if the object is nil
Force push the save if the server record is nil

The server record is nil probably because the record has been deleted on the server and we want to re-instate it. In this case we mark the change as needing a force push and retry the upload.

On upload if there are any changes that need force push, we upload them first with the save policy of CKRecordSaveChangedKeys. We DO NOT send all the changes in this update. When the update completes it calls back to upload any more changes, and we can upload the changes which don't require force pushing.

This way we keep to the default and suggested save policy of CKRecordSaveIfServerRecordUnchanged for most of the record uploads.