Core Data iCloud stores deprecated ...

According to the iOS10 documentation, Core Data stores with ubiquity options have been deprecated. But aside from deprecation warnings in code, it doesn't mention when the services will be discontinued ... will the apps still continue to sync for the forseeable future? Can someone on Core Data team comment?

Answered by Engineer in 146888022

Hi zulfishah,


Apps will continue to work for the foreseeable future. Aside from the deprecation warnings, there are no changes to or removal of the functionality in iOS 10. We don't have any specific time line to announce now, but traditionally deprecated symbols on our platform remain functional for a considerable period of time before removal.


Only the client Core Data iCloud API symbols are deprecated. Core Data with iCloud is built on top of the iCloud Drive service. The service pieces are not effected in any way and will continue to work. If and when the deprecated APIs are disabled in some future OS version, applications running on iOS 9 or 10 will continue to work.


- Ben

Can you send me a link for the documentation? I saw deprecation comments for iCloud related constants(symbols), However, I could not found mentions about deprecation of core data + iCloud.

The "What's New in iOS" only mentions this:

Several

NSPersistentStoreCoordinator
symbols related to ubiquitous content.



THat, and the deprecations in the code, made me conclude that Core Data iCloud is being deprecated. That's why I'm waiting and hoping for more details.

I've come to the same conclusion and am currently waiting for the video for WWDC session 242. I guess we need to migrate ubiquitous Core Data databases to CloudKit.

Just saw the "What's New in Core Data" talk and they don't mentioned anything at all about the deprecations and what it means for the Core Data iCloud sync system. Pretty disappointing. Hopefully there will be more information on this at some point soon.

I've been wondering the same thing. The docs for NSPersistentStoreCoordinator deprecate everything related to iCloud and don't suggest alternatives. That means it's apparently iimpossible to use Core Data with iCloud without using deprecated symbols. And that implies that iCloud + Core Data is itself deprecated. But the lack of any statement to that effect leaves things somewhat unclear. I thought this might be covered in the "What's New...." session, but there was no mention of it.

Accepted Answer

Hi zulfishah,


Apps will continue to work for the foreseeable future. Aside from the deprecation warnings, there are no changes to or removal of the functionality in iOS 10. We don't have any specific time line to announce now, but traditionally deprecated symbols on our platform remain functional for a considerable period of time before removal.


Only the client Core Data iCloud API symbols are deprecated. Core Data with iCloud is built on top of the iCloud Drive service. The service pieces are not effected in any way and will continue to work. If and when the deprecated APIs are disabled in some future OS version, applications running on iOS 9 or 10 will continue to work.


- Ben

What's the recomendation for new applications using iCloud with Core Data for iOS 10?


Should we use the deprecated API until there is an updated one from Apple?

(Or to rephrase: Is Apple going to continue providing this kind of API in the future, in one form or the other?)


Or should I invest in a third party sync solution?


Personally, I am not into writing my own sync framework.


Regards,

Jasko

Given the improvements to Core Data with query generations and persistent coordinator locking I'd guess an implementation of sync (that includes push notifications unlike iCloud Core Data) from Apple will arrive at next WWDC, hopefully. In the meantime I suppose you have to do it yourself. I've been working on a delta sync with relations for a very long time and still isn't ready because it is extremely difficult to get right, so I would recommend just maintaining a cache from CloudKit in Core Data and doing full refresh instead of trying to save bandwidth.

Thanks for the confirmation, Ben.

Same here, I am working on a new app that supposed to use iCloud Core Data sync. Now because the APIs are deprecated in iOS 10, I am stuck now and don't know how to proceed with the project plan.

What is the alternate introduced in iOS 10 for developers who have their live apps using core data and want to integrate iCloud?

Hello,


Have you found a solution for the subject?

Since i have the same iCloud + CoreData setup.

I'm also working on a new app and have to make a decission how to sync my core data over several devices.


The following Design Guide still states that syncing Core Data with iCloud is possible. But all links to further documentation have been removed (esp. iCloud Programming Guide for Core Data)

https://developer.apple.com/library/content/documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesignForCoreDataIniCloud.html#//apple_ref/doc/uid/TP40012094-CH3-SW1


What's the official recommendation to sync Core Data over different devices? Shall we completly move to CloudKit and remove Core Data from our apps?


Thanks for some feedback.

Core Data iCloud stores deprecated ...
 
 
Q