使用Core Data与watchOS 2.0

29
我使用WatchKit 1.0制作了一款iOS/Apple Watch应用程序,该应用程序使用共享组容器和自定义框架来访问相同的Core Data存储。现在,在watchOS 2.0的过渡指南中,苹果公司说道:
如果您现有的Watch应用程序和iOS应用程序使用共享组容器或iCloud交换数据,则必须更改在watchOS 2中交换数据的方式。因为WatchKit扩展现在在Apple Watch上运行,所以扩展必须通过无线方式与iOS应用程序交换数据。您可以使用NSURLSession对象或使用Watch Connectivity框架来实现这一点,该框架支持iOS应用程序和WatchKit扩展之间的双向通信。

然而,这个在Core Data中是如何工作的呢?我需要维护两个独立的存储,一个在手表的文档文件夹中,另一个在手机上,并使用Watch Connectivity框架来同步更改吗? 我看到watchOS 2.0可以访问Core Data框架(它在可用技术列表中)…但我不确定当存储位于手机上时这有什么帮助。任何帮助/指导将不胜感激!


嗨,你解决了这个问题吗?请帮忙提供代码,如何在WatchKit OS 2中访问核心数据。 - Rajesh Maurya
2个回答

12

我建议使用用户信息后台传输来设置同步,以便在第一次运行后传输存储后,在两个方向上镜像每个数据库操作(如果需要)。

WWDC Session 713 - Introducing Watch Connectivity介绍了所需的机制。他们提供了一个很好的API。


谢谢你推荐的视频,我刚刚看了,对我帮助很大!我同意关于API的观点...它易于使用且能完成工作。 - Becky Hansmeyer
3
请问您如何在iPhone和Watch之间同步Core Data数据? - Mukesh

11

是的,您将不得不维护两个独立的存储。如果任一方是“只读”客户端,而CoreData数据存储很小且更改不频繁,那么您可以潜在地使用transferFile WatchConnectivity API每次更改时传输整个存储。


在WatchKit OS 2中,我是否仍然需要使用Shared Group来访问iPhone的核心数据数据库? - Rajesh Maurya
2
不,共享组仅适用于在同一设备上运行的进程。在这种情况下,您将需要使用WatchConnectivity框架来协调进程之间的通信。 - ccjensen
2
那么我该如何访问保存在iPhone应用程序中的核心数据数据库? - Rajesh Maurya
你应该提出一个单独的问题在 Stack Overflow 上进行讨论。评论区不适合深入讨论这个问题。 - ccjensen
@ccjensen:如果可能的话,能否分享一个样例项目?我也遇到了这个问题,您的帮助将拯救我的生命。 - Muhammad Junaid Butt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接