CoreData + CloudKit 但不共享

CoreData + CloudKit but No sharing

CoreData 非常棒。它使得使用 SQLite 数据库编写持久存储的代码非常可预测。

CloudKit 非常棒。它使得在 iCloud 中编写持久存储变得容易,并且可以在用户的​​设备之间共享。

CoreData + CloudKit 加倍出色,因为它带来了本地数据存储和设备间共享的优势。

现在,Apple 在使用 CoreData + CloudKit 时不支持 CloudKit 用户之间的共享这一事实令我完全傻眼并感到惊讶. 每次我提出这个问题,人们都看着我,好像为什么会有人想要这个?我很困惑。为什么人们不想利用本地+云同步的可共享存储组合?

如果有人能帮助我理解为什么这不存在或者为什么我不想设计将本地持久性与云同步以及在用户之间共享这些对象的能力相结合的存储,那将非常有用?

全部同意。

正如您提到的,NSPersistentCloudKitContainer 不支持在 iOS 13 中共享,但由于有很多反馈要求,今年将添加它(目前处于测试阶段)。这是关于 public 数据库的 WWDC20 演讲:https://developer.apple.com/videos/play/wwdc2020/10650/.

这里的起点是通过NSPersistentCloudKitContainerOptions.databaseScope

与此同时,如果您需要在发布此内容之前立即共享,您可以直接访问 CKRecords 来实现自己的共享,而无需重建整个 CloudKit 实现。有点模糊,但 this doc 的第一段明确指出,只是没有详细说明 CKShare 如何用于核心数据同步。

贾斯汀,如果我理解你的观点,那么你 100% 正确,

"Now, I'm completely dumb founded and surprised by the fact that Apple does not support CloudKit sharing between users when using CoreData + CloudKit..."

同步非常困难

我们所处时代的“主要”技术基石是 Parse(编写它的人当之无愧地赚了数万亿美元)、Firebase 以及 AWS 和 Goog-services 提供的同步服务。

还有许多其他同步竞争对手,如 Couchbase、ably.io、realm.io 和类似的 backbones,如 pubnub。

Sync 实际上是当今主要的互联网 backbone。

(最大的服务——TikTok、Twitter——无非就是你要的,同步服务,上面加了几个按钮和标志。)

CFRD 和其他方法作为计算机科学问题确实非常非常非常困难 (https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type),而且从硬件和大规模布线来看,这非常困难。

所以你基本上是在说 “什么时候哦什么时候 Apple 会快点进行同步 backbone 这样我就可以最终停止使用 {Firebase、AWS 或任何你的毒药}。 .."

你是对的。

(别忘了,一个问题是,我们生活在 droid-iphone 的二元世界中。没有客户会雇用你来为狗建立下一个 tiktok,为狗建立 facebook 和它将 "只是 iOS"。如果 Apple 制作自己的同步服务,它将在到达时死掉,创造中最无意义的白象,除非它是 ios、droid、www 以及诸如 unity 等的次要专业 。)

如果我理解你的问题,是的,我想这只是时间问题。但是(就像任何同步 backbones)它必须是全平台的。

更不用说物联网、苹果眼镜等