I'm in the process of enabling iCloud support on my app and have encountered an issue. Within my content object that users create, they can choose a picture for their object. Currently I'm storing that image as binary data in coredata and am using the external storage option because in testing i've found that images can range from 1-3mb in size.
NOTE: I'm saving the data itself instead of a reference to the selected image so that a user cannot accidentally remove an image asset that they have added to my app's content object by removing an image from their photostream or camera roll.
While reading Apple's information on iCloud they mention not to store large downloaded data files. (source)
Given my current data structure seems to work without iCloud, how should I modify it so that I can incorporate iCloud for data syncing across devices? If Apple suggests not syncing large files, how should that data be sent between devices?
It depends on where the users choose these pictures from. Basically, if you don't send the image via iCloud, is there any other way you could get it?
If they come from some online source and they could be downloaded from there again, then you'd fall into the "large downloaded data files" category. Pass the URL or other details on how to re-do the download from one device to another and download again as needed.
If they come from some other source that's not readily available on another device (e.g. the user selected a photo from their camera roll), go ahead and pass it between devices as is. That would be more like a user document or data, not something you can re-download on demand.