How to integrate iCloud on a non Document-based app?
I’ve read the Apple docs and Ray Wenderlich’s tutorial. It seems that I’m forced to use UIDocument so I read it up in the docs. I’ve found that it’s effective to use Document-based approach.
My problem is I don’t want to be tied in techniques specific to the platform (iOS) thus my app has its own models made from scratch that only inherit from NSObject. This includes saving/loading.
Now, I need to integrate iCloud along with my old models. How will I do it in an elegant/effective way where I get to keep my old model implementation and be able to integrate iCloud?
Solutions Collect From Internet About “How to integrate iCloud on a non Document-based app?”
You are not in any way forced to use
UIDocument. You can use iCloud via
NSMetadataQuery. The general approach is:
When creating files
- Create the file locally, as normal without iCloud
-[NSFileManager setUbiquitous:itemAtURL:destinationURL:error:]to transfer the file to iCloud storage.
- (if necessary) Check on upload progress using
NSMetadataQueryor by polling URL resource values.
When opening files
NSMetadataQueryto locate iCloud-resident files
-[NSFileManager startDownloadingUbiquitousItemAtURL:error:]to begin download or to synchronize the local copy with the cloud copy.
- Check on upload progress using
NSMetadataQueryor by polling URL resource values with
When editing files
NSFileCoordinatorto coordinate your file access with the ubiquity daemon.
NSFilePresenterto get notifications of changes to files.
This is all covered in sessions from WWDC 2012 (and maybe 2011, I don’t recall), and the classes and methods you’ll need are all in the iOS documentation.
- Add same subview multiple times to view
- Objective-C vs PhoneGap
- iOS – 3 duplicate symbols for architecture i386
- Generating TIFF in iOS
- Download and install an ipa from url on iOS
- Super slow lag/delay on initial keyboard animation of UITextField
- How to localize the images in Images.xcassets?
- Scale with CGAffineTransform and set the anchor
- IOS – How to disable push notification at logout?
- accessoryButtonTappedForRowWithIndexPath: not getting called.
- Will Xcode 7.3.1 work on macOS 10.12?
- Memory leak with large Core Data batch insert in Swift
- Error – Thread 1: signal SIGABRT (unrecognized selector sent to instance)
- How to add UISegmentControl in UINavigationItem ..?