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)
- Drag the two classes from the DDiCloudSync folder into your projecy and #import the header file in your Application Delegate
- init the class:
[DDiCloudSync sharedSync]
and set a delegate to handle merging potentially conflicting data from local or from iCloud - 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