Questions concerning iCloud + core data

2019-03-21 16:41发布

I have an app on the app store, that uses coredata as storage. I wan't to update the app with iCloud synchronization as new feature. Following apple`s sample code, I managed to have my core data storage synchronize between devices.

However, I'm experiencing problems when either iCloud synchronization is turned off/on in the app on only one of the devices, or when the app is deleted from the device and the reinstalled. In both cases, data is not synchronized back to the device, although it is available just fine on a second device (which was not disabled/reinstalled).

I also found that all storage is effectively erased completely, when I delete the app from all devices, and then reinstall. Althrough I get a couple of merge notifications in the console (even some without errors), I can't see no data in the local storage of the device.

Browsing the mobile documents folders on my mac still reveals lots of transaction logs in the icloud storage of my app.

Even deleting the app from all devices and starting from scratch wont sort things out. I will end up in a situation where data is either only synced to one device, or not synced at all.

I wonder if there is anything I can do about this inconsistent state that is created when only one device is temporarily iCloud disabled, or the app is deleted from ONE device?

As for my code, its an 1:1 copy of the recipces example from apple.

2条回答
在下西门庆
2楼-- · 2019-03-21 17:31

Apple makes it seem easy, but there are a number of nuances with regard to correctly seeding iCloud with data, and what happens afterwards when iCloud support is toggled on and off on different devices.

I implemented a sample project that demonstrates a straightforward way to add iCloud support to Library-style CoreData apps. It's called iCloudStoreManager and it's available on github.

I'm still testing it before I add iCloud support to one of my own production apps. It's working, but I see unexpected errors and delays when an iPad 3 is in the mix. It works, but with long delays.

I've also tested with iPhone 4, iPhone 4S, and the original iPad, and any mix of those devices works well in my experience.

查看更多
Anthone
3楼-- · 2019-03-21 17:34

Daniel Pasco talked about using Core Data and iCloud together at NSConference 2012. Some notes from that blog post:

launching with -com.apple.coredata.ubiquity.logLevel 3 to get a spamfest in the message log saying what Core Data and iCloud are doing.

The conclusion from this talk appears to be that using Core Data and iCloud are really not ready for each other at this stage.

He posted an updated Core Data Recipes project on Github which may or may not fix your problem.

查看更多
登录 后发表回答