{"id":14879,"date":"2016-06-17T19:33:44","date_gmt":"2016-06-17T23:33:44","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=14879"},"modified":"2016-06-27T11:33:37","modified_gmt":"2016-06-27T15:33:37","slug":"the-deprecation-of-icloud-core-data","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2016\/06\/17\/the-deprecation-of-icloud-core-data\/","title":{"rendered":"The Deprecation of iCloud Core Data"},"content":{"rendered":"<p>In March 2013, I chronicled the <a href=\"http:\/\/mjtsai.com\/blog\/2013\/03\/30\/icloud-and-core-data\/\">problems<\/a> developers were having with Core Data iCloud syncing. Many concluded that the basic <code>NSPersistentStoreUbiquitousContent<\/code> design was flawed. Bugs could be fixed, but it would never be able to do what people wanted. Apple didn&rsquo;t give the impression that it thought there were major problems. It kept reporting minor improvements and bug fixes. When <a href=\"http:\/\/mjtsai.com\/blog\/2014\/10\/22\/cloudkit\/\">CloudKit was announced<\/a> in 2014, it had no official Core Data story. As far as I know, there is still isn&rsquo;t one. Meanwhile, <a href=\"https:\/\/twitter.com\/drewmccormack\">Drew McCormack<\/a> <a href=\"http:\/\/mjtsai.com\/blog\/2013\/10\/02\/core-data-ensembles\/\">built<\/a> the <a href=\"http:\/\/www.ensembles.io\">Ensembles<\/a> framework, which fixes just about all the problems with Apple&rsquo;s design and works with both CloudKit and Dropbox.<\/p>\n\n<p>Fast forward to <a href=\"http:\/\/mjtsai.com\/blog\/2016\/06\/15\/wwdc-2016-links\/\">WWDC 2016<\/a>. When installing the Xcode 8 beta, I noticed that all of the symbols related to iCloud Core Data were marked as deprecated in macOS 10.12 and iOS 10, with the comment &ldquo;Please see the release notes and Core Data documentation.&rdquo; Strangely, the <a href=\"https:\/\/developer.apple.com\/library\/prerelease\/content\/releasenotes\/General\/WhatNewCoreData2016\/ReleaseNotes.html\">Core Data release notes<\/a> and <a href=\"https:\/\/developer.apple.com\/library\/prerelease\/content\/releasenotes\/MacOSX\/WhatsNewInOSX\/Articles\/OSXv10.html\">What&rsquo;s New in macOS 10.12<\/a> documents make no mention of this. <a href=\"https:\/\/developer.apple.com\/library\/prerelease\/content\/releasenotes\/General\/WhatsNewIniOS\/Articles\/iOS10.html\">What&rsquo;s New in iOS 10<\/a> simply says that &ldquo;Several <code>NSPersistentStoreCoordinator<\/code> symbols related to ubiquitous content&rdquo; have been deprecated.<\/p>\n\n<p>I asked <a href=\"https:\/\/twitter.com\/mjtsai\/status\/743544729925738498\">on Twitter<\/a> what was up, and no one seemed to know. No one had anything <a href=\"https:\/\/twitter.com\/kbaxter\/status\/743553189098594305\">nice<\/a> <a href=\"https:\/\/twitter.com\/owensd\/status\/743544888046718976\">to<\/a> <a href=\"https:\/\/twitter.com\/SteveStreza\/status\/743564008427401217\">say<\/a> about iCloud Core Data, either, though no doubt many developers still rely on it. I hoped that all would be explained in today&rsquo;s <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2016\/242\/\">WWDC Session 242: What&rsquo;s New in Core Data<\/a>. Alas, <a href=\"https:\/\/twitter.com\/atomicbird\/status\/743860649906704385\">reports<\/a> <a href=\"https:\/\/forums.developer.apple.com\/thread\/48869\">are<\/a> that absolutely <a href=\"https:\/\/twitter.com\/zulfishah\/status\/743861202372169728\">nothing<\/a> <a href=\"https:\/\/twitter.com\/zulfishah\/status\/743885401996333056\">was said<\/a> about iCloud in the session. A key technology that underpins apps is (apparently) to be removed, and Apple didn&rsquo;t tell anyone at its own developer conference. In my view, this is shameful. The issue is more acute than with a normal deprecation because the APIs rely on cloud services, which could conceivably stop working even for older OS versions where they are not deprecated.<\/p>\n\n<p>It seems clear that the way forward is <a href=\"http:\/\/www.ensembles.io\">Ensembles<\/a>, unless you want to write your own sync engine or <a href=\"https:\/\/twitter.com\/ethansinjin\/status\/743958404012466177\">wait<\/a> for Apple to announce one. I hope that the deprecation will spur more of the community to coalesce around Ensembles.<\/p>\n\n<p>On a more positive note, it looks like there are a lot of great developments in Core Data <a href=\"https:\/\/developer.apple.com\/library\/prerelease\/content\/releasenotes\/General\/WhatNewCoreData2016\/ReleaseNotes.html\">this year<\/a>, including the integration of a <a href=\"https:\/\/twitter.com\/rentzsch\/status\/743866055081111552\">mogenerator<\/a>-<a href=\"https:\/\/twitter.com\/rentzsch\/status\/743867083079835648\">like<\/a> tool into Xcode and, <a href=\"https:\/\/twitter.com\/ishabazz\/status\/743853626968285184\">apparently<\/a>, the end of <code>NSObjectInaccessibleException<\/code>, which doesn&rsquo;t play well with Swift.<\/p>\n\n<p>Update (2016-06-18): <a href=\"http:\/\/www.ensembles.io\/news\/2016\/6\/18\/the-core-data-sync-deprecation-sale\">Drew McCormack<\/a>:<\/p>\n<blockquote cite=\"http:\/\/www.ensembles.io\/news\/2016\/6\/18\/the-core-data-sync-deprecation-sale\"><p>If you move to Ensembles now, you not only get the usual support, documentation, and source code, you also get it all at half the standard price. The sale will continue until macOS Sierra is released later this year. <\/p><\/blockquote>\n\n<p>Update (2016-06-19): See the comments on <a href=\"https:\/\/news.ycombinator.com\/item?id=11927796\">Hacker News<\/a>.<\/p>\n\n<p>Update (2016-06-22): Apple&rsquo;s <a href=\"https:\/\/forums.developer.apple.com\/message\/147065\">Ben Trumbull<\/a>:<\/p>\n<blockquote cite=\"https:\/\/forums.developer.apple.com\/message\/147065\"><p>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&rsquo;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.<\/p>\n<p>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.<\/p><\/blockquote>\n<p>However, App Store Review Guidelines say that apps cannot use deprecated technologies.<\/p>\n\n<p>Update (2016-06-27): <a href=\"https:\/\/twitter.com\/dlpasco\/status\/747205555870011392\">Daniel Pasco<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/dlpasco\/status\/747205555870011392\"><p>Last time I dove in to iCloud I lost a year of schedule and an evangelist eventually called me a masochist for continuing to try.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>In March 2013, I chronicled the problems developers were having with Core Data iCloud syncing. Many concluded that the basic NSPersistentStoreUbiquitousContent design was flawed. Bugs could be fixed, but it would never be able to do what people wanted. Apple didn&rsquo;t give the impression that it thought there were major problems. It kept reporting minor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[109,16,31,1137,30,1381,1004,71,901,269,1227,226],"class_list":["post-14879","post","type-post","status-publish","format-standard","hentry","category-technology","tag-coredata","tag-icloud","tag-ios","tag-ios-9","tag-mac","tag-macos-10-12","tag-mogenerator","tag-programming","tag-swift-programming-language","tag-syncing","tag-top-posts","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/14879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=14879"}],"version-history":[{"count":6,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/14879\/revisions"}],"predecessor-version":[{"id":14972,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/14879\/revisions\/14972"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=14879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=14879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=14879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}