Coredata iPhone 到带有 iCloud 的 iPad/Mac?
Posted
技术标签:
【中文标题】Coredata iPhone 到带有 iCloud 的 iPad/Mac?【英文标题】:Coredata iPhone to iPad/Mac with iCloud? 【发布时间】:2013-01-13 13:10:45 【问题描述】:我们已经完成了使用 coredata 的 iPhone 应用程序的编写。 在进一步的版本中,我们计划添加一个 iPad 应用程序,该应用程序能够显示 iPhone 应用程序收集的数据(以及修改,使用它),从而为用户提供更多交互可能性。
我的问题是:是否可以将现有的核心数据(iPhone 上已安装的应用程序)移动到云端并使用 iPad 应用程序读取该数据?
如果是:你能指出我从哪里开始的正确方向吗?
如果没有:是否有其他替代方法可以通过 iPad 应用访问使用 iPhone 应用创建的核心数据?
【问题讨论】:
为什么不把它做成一个通用应用呢?那么就没有什么可动的了; iPad 上的应用程序会自动从 iPhone 或 iPod 上使用的同一个无处不在的商店中检索用户的数据。 我认为这是错误的 - 我们当然打算让它通用而不是为 ipad 制作一个全新的应用程序。然而它真的像你建议的那么简单吗?还是从 coredata(physical) 过渡到 coredata(cloud) 可能会有很多问题? 【参考方案1】:使用 Core Data 内置的 iCloud 支持时,您使用哪种设备并不重要,只是 Core Data 堆栈的初始化方式相同。任何 ios 设备或 Mac 都可以使用同一个 iCloud 存储,并且在其中一个设备上创建的数据可以在另一个设备上读取。
但有一个关键细节:如果您已经拥有数据存储并添加了 iCloud 支持,那么这些预先存在的记录不会自动迁移到云中。 iCloud 基于事务日志工作,事务日志仅在您保存更改时创建。不会立即更改的现有数据不会生成任何事务,因此不会转到云端。
如果您在添加 iCloud 时有现有数据,则需要将数据迁移到新的数据存储以强制对这些现有记录进行事务处理。您可以使用NSPersistentStoreCoordinator
的migratePersistentStore:toURL:options:withType:error:
方法相当容易地做到这一点。这并不难,但并不总是显而易见的。
首先,我建议在 iCloud 上观看 Apple 的 WWDC 视频——尤其是 WWDC 2012 的第 227 节,Using iCloud with Core Data。接下来,我建议极度谨慎,因为截至今天,Core Data 的 iCloud 支持仍然,容我们说,远不是最可靠的 Apple API。
【讨论】:
以上是关于Coredata iPhone 到带有 iCloud 的 iPad/Mac?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone SDK:带有核心数据表示例代码的 SearchDisplayController?
iPhone4 Core Data如何插入带有节号的新对象?
iPhone CoreData 属性:对 managedObjects 的更改太慢