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 之间传输数据的最佳方式是啥? [关闭]

如何在 iOS/macOS 云共享相册中为照片附加短数据?

iOS 和 macOS 上的通用应用内购买

苹果发布 macOS 12——Monterey

全功能iMazing macOS特别版+win系统特别版iOS设备管理+存档管理

如何在没有 macOS 的情况下开发和分发 iOS 应用程序? [关闭]