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 数据