iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用
Posted
技术标签:
【中文标题】iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用【英文标题】:iCloud Core Data sharing between iOS and macOS apps not working 【发布时间】:2017-03-23 23:14:24 【问题描述】:试图让 iCloud Core Data 在不同的 ios 和 macOS 应用程序之间工作。我可以看到...
1:iCloud 核心数据分别在每个应用程序上运行(在不同设备上测试)
2:应用正在共享一个容器(文档工作正常)
3:钻入“Mobile Documents”目录会显示 iCloud 核心数据连接到同一容器时显示的目录
这是使用终端应用程序的深入分析
iCloud~com~Distribution-Systems-Associates~RWIA (THIS IS THE CONTAINER NAME)
CoreData
testFindItStore (THIS IS THE DATA STORE NAME)
joeruth~50BDB140-65A8-5D85-B5A2-AD5EA59FE89C (macOS URL)
mobile~727D323E-9EFA-4C40-BE69-7ABB9913325B (iOS URL)
但是,这在两个应用程序之间不起作用。我读到“主要”应用程序需要得到应用程序商店的批准,然后才能继续进行任何共享。这是真的还是假的? testFindItStore 下应该有两个目录还是只有一个?应该有两个目录,并且每个目录之间的数据更改都通过 iCloud 进行通信吗?
以下是每个应用连接到 iCloud 时的日志消息:
这是 Mac 应用程序日志...
2016-11-09 20:54:24.455 记住 Mac V3 的位置[64763:3708924] -PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:: CoreData: Ubiquity: joeruth~50BDB140-65A8-5D85-B5A2-AD5EA59FE89C:testFindItStore 使用本地存储:1 表示新的 NSFileManager 当前令牌 2016-11-09 20:54:25.415 记住 Mac V3 的位置 [64763:3709018] -PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:: CoreData: Ubiquity: joeruth~50BDB140-65A8-5D85-B5A2-AD5EA59FE89C:testFindItStore 使用本地存储:0新的 NSFileManager 当前令牌
这是 iOS 日志...
2016-11-09 20:53:00.308265 Remember-Where-Its-At[299:21901] -PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:: CoreData: Ubiquity: mobile~727D323E-9EFA-4C40-BE69-7ABB9913325B:testFindItStore 使用本地存储:1 代表新的 NSFileManager 当前令牌 2016-11-09 20:53:00.591029 Remember-Where-Its-At[299:21902] -PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:: CoreData: Ubiquity: mobile~727D323E-9EFA-4C40-BE69-7ABB9913325B:testFindItStore 使用本地存储:0 表示新的 NSFileManager 当前令牌
【问题讨论】:
FWIW,从 iOS 10 和 macOS 10.12 开始,Core Data 中的 iCloud 已被弃用。如果这是一项新功能,您可能需要考虑使用其他方法。 我不确定这是不是真的。某些属性已折旧,但我严重怀疑 Core Data 中的 iCloud 是否已完全折旧。如果是这样,那么为什么它与这些应用程序一起工作?我认为你得到了一些不好的信息,但我会检查一下以确保。 iOS 应用程序即将完成。如果我提出它并被应用商店接受,那么我认为可以肯定地说 iCloud Core Data 的消亡可能有点为时过早。 Deprecated 并不意味着不工作,它意味着它不鼓励新的开发,并且是一个警告,它的生命周期已计划结束。虽然每个 iCloud Core Data 符号都已弃用,但它显然是一个已弃用的系统。 谢谢。事情即将完成,如果我需要修复它以使用 iCloud Core Data 替换,我会这样做。我认为应用程序的目标需要是 iOS 9.3。 App Store 不接受目标为 iOS 10 的 iCloud Core Data 应用。 【参考方案1】:终于搞定了。问题是我在 iOS 和 macOS 中都更改了数据模型。我原以为是因为新模型是相同的,所以它们会同步。打开详细日志记录,发现在 Mac 上处理 DCT 文件时,由于模型版本不匹配,它们被跳过。然后我删除了 Mac 中的模型,直接从 iOS 应用程序中导入了模型。再次运行它,这一次它并没有因为不匹配而跳过更新,而是因为系统认为更新已经应用。更改本地数据 SQL 数据库的名称即可。
现在像冠军一样工作。
关于折旧的注意事项...我认为 WWDC 2017 会非常有趣。无论是什么驱动 Note 应用程序(它不再是电子邮件)都将发布给开发者世界。不知道任何事实,但这是我的怀疑。我们拭目以待。
【讨论】:
以上是关于iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用的主要内容,如果未能解决你的问题,请参考以下文章
通过无线在 iOS 和 MacOS 之间传输数据的最佳方式是啥? [关闭]