SharedCoreData 使用 OSX 应用和 iOS 应用

Posted

技术标签:

【中文标题】SharedCoreData 使用 OSX 应用和 iOS 应用【英文标题】:SharedCoreData using OSX app and iOS App 【发布时间】:2014-03-06 18:05:28 【问题描述】:

我正在使用来自https://github.com/jab5990/TestCDiCloud.git 的源代码。显然,这个源代码是来自WWDC 2012 Session #227 的示例代码,名为Using iCloud with Core Data。 Apple 网站上似乎不再提供原始源代码。

我是 Core Data 的新手,我对这些概念有些困惑。情况是两个应用程序都在运行时数据没有得到刷新:

    我将数据添加到我的 mac 应用程序(前 2 行) 我在模拟器中启动 iPhone 7 应用程序(登录 iCloud 后) 显示来自 mac 的条目 我向 mac 应用程序添加更多数据 几分钟后数据未显示

所以在 iPhone 应用程序上的DetailViewController.m:204 中注册了通知NSPersistentStoreDidImportUbiquitousContentChangesNotification,这意味着应该合并来自 Mac 应用程序的更改。

如何确保数据保持同步。

【问题讨论】:

【参考方案1】:

在模拟器中,有时您需要使用 Debug -> Trigger iCloud Sync 菜单来触发同步。它不像 ios 设备那样是自动的。

如果您仍然遇到问题,请尝试这些示例应用程序,其中包括处理 iCloud 帐户切换、从本地移动到 iCloud、进行备份、在 iCloud 中存储和获取备份文件等的代码......

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/

顺便说一句,wwdc2012 会话很旧,所以我会查看更新的 wwdc2013 会话 207 视频,了解 iOS7、OSX 10.9 中发生的变化

【讨论】:

【参考方案2】:

iCloud 可能需要相当长的时间来传输文件,然后 Core Data 框架必须解决实际导入文件的问题。因此,延迟几分钟甚至更长的时间并非闻所未闻。

您可以使用 Xcode 触发与“调试”菜单的同步。这可能会有所帮助。否则,您可能只需要等待,或者退出并重新启动应用程序。

欢迎来到 iCloud 调试的美妙世界。

【讨论】:

以上是关于SharedCoreData 使用 OSX 应用和 iOS 应用的主要内容,如果未能解决你的问题,请参考以下文章

iOS:SharedCoreData 示例代码 (iCloud + CoreData) |如何合并更改

使用 NSUbiquitousKeyValueStore 在 iOS 应用和 OSX 应用之间共享 iCloud 数据

使用 OCMock 进行 OSX 应用程序测试

使用 OSX 10.10 构建 Meteor/React 移动应用程序

为 OSX 优化无响应(核心数据)应用程序

如何在扩展坞和应用程序切换器中更改 OSX 应用程序的名称?