It’s no secret that Apple’s implementation of iCloud syncing for Core Data has issues. Check out episode 12 of Debug for a great discussion and check out the show notes for a number of links to blogs that go into even more detail.
With WWDC around the corner, we can hope for some fixes in iOS 7 and OS X 10.9, but until then a few interesting alternatives have been released. Here’s a look at four of the most promising frameworks for syncing your app’s data.
UbiquityStoreManager
UbiquityStoreManager is a framework that wraps Apple’s existing offerings and does its best to cope with the known issues and problems surrounding syncing with iCloud and Core Data. It tries to handle as much of this for you automatically, but offers hooks to deal with issues on your own as well. It also includes expanded logging features and a script to parse Apple’s ubiquity log output. The project ReadMe is well written and goes into detail about how to setup the framework, how to deal with issues, and how the framework is designed.
If you absolutely need to use iCloud with Core Data, UbiquityStoreManager is a great place to start.
TICoreDataSync
The TICoreDataSync framework is developed by No Thirst Software and provides Core Data Cloud based syncing for iOS and Mac using DropBox. The framework is designed to be easily extended to support other Cloud storage providers, and includes experimental support for iCloud based syncing which may make it an alternative to UbiquityStoreManager.
Using TICoreDataSync is similar to using UbiquityStoreManager – you supplement your Core Data stack with the TICoreDataSync classes, configure your syncing setup, and include code to respond to conflicts and issues that come up. It offers syncing for document based apps too and includes some great example projects and documentation to get you up and running quickly.
TICoreDataSync looks to be a great option if you need to sync Core Data managed data between apps using a file-based Cloud storage provider like DropBox.
Helios.io
Helios.io is a collection of tools by the prolific Mattt (yes, three t’s) Thompson of Heroku that offers both client and server side components for data synchronization, push notifications, In App Purchase (IAP), Passbook, and Newsstand. The server side tools are easily deployed to Heroku, but are built on Rack and can be added to an existing Rails or Sinatra app. The client side frameworks are all available as Cocoapods for Mac and iOS for easy integration with your Xcode project.
The data synchronization features of helios.io rely on AFNetworking for fetching and submitting data to your backend, and AFIncrementalStore as an interface to your Core Data model. You can pick and choose which features to use within your app, and if you’re hosting with Heroku or have a Rails or Sinatra backend that you’re already managing this a great option.
OmniPresence
The latest alternative comes from the venerable OmniGroup and is called OmniPresence. It looks to be shipping soon and relies on a WebDAV server for syncing for documents. OmniGroup is dog-fooding the framework in their OmniGraffle, OmniOutliner, and OmniGraphSketcher apps on Mac OS X and iOS.
More details should be released soon, but for now there are a few blog posts and intro videos to get you started.
[vimeo 66598535 w=500 h=281]
OmniPresence Intro from The Omni Group on Vimeo.
Spot the Vulnerability: Loops and Terminating Conditions
Spot the Vulnerability: Loops and Terminating Conditions In memory-unsafe languages like C, special care must be taken when copying untrusted data, particularly when copying it to another buffer. In this post, we\'ll spot and mitigate a past vulnerability in Linux\'s...