Sync your NSUserDefaults to iCloud automatically
Clone or download
Pull request Compare This branch is 1 commit ahead, 2 commits behind Daij-Djan:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
DDiCloudSync.xcodeproj
DDiCloudSync
DDiCloudSyncTests
.gitignore
DDiCloudSync.podspec
Icon.png
LICENSE.txt
README.mdown

README.mdown

What is this?

A clean and simple class to sync NSUserDefaults to iCloud. (WITH a delegate for conflict handling. See this [Stackoverflow question][1]

[1]: http://stackoverflow.com/questions/14112942/nsuserdefaults-and-icloud/14113064)

How to use?

  1. Drag the two classes from the DDiCloudSync folder into your projecy and #import the header file in your Application Delegate
  2. init the class: [DDiCloudSync sharedSync] and set a delegate to handle merging potentially conflicting data from local or from iCloud
  3. Call [DDiCloudSync start];

###Example delegate

whenever something is about to be sync'd up, this method is called to provide a final dictionary to send

- (NSDictionary*)mergedDefaultsForUpdatingCloud:(NSDictionary*)dictInCloud withLocalDefaults:(NSDictionary*)dict {
    NSMutableDictionary *newdict = dict.mutableCopy;
    newdict[@"merged"] = @"to icloud";
    return newdict;
}

whenever something is about to be sync'd down, this method is called to provide a final dictionary to write to the defaults

   - (NSDictionary*)mergedDefaultsForUpdatingLocalDefaults:(NSDictionary*)dict withCloud:(NSDictionary*)dictInCloud {
    NSMutableDictionary *newdict = dictInCloud.mutableCopy;
    newdict[@"merged"] = @"from icloud";
    return newdict;
}

important: this is only a mock-implementation of the delegate. You need to put custom app-specific logic here for conflict handling

note: when you dont set a delegate, the class just overwrites the cloud / the local defaults

#####based on original MKiCloudSync code by @mugunthkumar