Skip to content

Push, pull and merge? #69

@NorbNorb

Description

@NorbNorb

If I have three devices A, B and C, all working on their own local stores first (iCloud disabled).
How can I

  • Push:
    Device A enables cloud and uses its local store to overwrite any data in iCloud and other devices can pull from there.
  • Pull:
    Device B enables cloud and deletes its local cloud store for rebuilding it from iCloud.
  • Merge:
    Device C enables cloud and keeps its local data, but merges incoming transaction logs.

My implementations so far are:

  • Push:
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] deleteCloudContainerLocalOnly:NO];
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] setCloudEnabled:YES];
  • Pull:
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] deleteCloudContainerLocalOnly:YES];
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] deleteLocalStore];
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] setCloudEnabled:YES];
  • Merge:
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] deleteCloudContainerLocalOnly:YES];
[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] setCloudEnabled:YES];

Our observations are that a push of device A followed by a pull of device B work if iCloud wasn't populated before. Devices will be in sync then. But if the devices disable iCloud again and make another push & pull procedure, all pulling devices don't show any data.

We can get the devices back in sync if we do a
objective-c[[[AppDelegate sharedAppDelegate] ubiquityStoreManager] deleteCloudContainerLocalOnly:NO]; wait for a short time and then hit the the push and pull buttons on the devices again.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions