问题标签 [nspersistentcloudkitcontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
58 浏览

ios - 与 CloudKit 共享核心数据:无法接受共享

我的应用程序使用 Core Data,然后使用 CloudKit 在设备之间同步,现在我想在用户之间共享数据。我观看了通过 CloudKit 和 Core Data 共享数据的构建应用程序以及CloudKit WWDC21 中的新功能,并认为我已经掌握了这些概念。CloudKit 在 iOS15 中使用区域共享和 CKShares 来处理共享和核心数据附加到这个实现。

我这样设置我的核心数据堆栈:

实现了 SceneDelegate 用户接受:

但是,在我的 UI 中共享 NSObject 后,使用UICloudSharingController如下所示:

我的 SceneDelegate 方法永远不会被调用,当我从消息应用程序中按下邀请时,我会收到以下警报。我不太确定在这种情况下出了什么问题,因为在 CloudKit 开发人员控制台上,我在私有数据库中看到该对象,其区域为 com.apple.coredata.cloudkit.share.[UUID]。我还没有发布这个应用程序,所以我不确定它从哪里获取版本信息,因为这两个应用程序都是从 Xcode 调试器(相同的版本和构建)启动的。此外,我无法在其他问题上找到此警报的参考,因此欢迎任何建议、建议或帮助,因为我已经坚持了几个晚上。如果有更多信息可以阐明这个问题,请告诉我。

0 投票
0 回答
11 浏览

core-data - 将本地备份还原到 NSPersistentCloudKitContainer

我正在尝试决定是否使用NSPersistentCloudKitContainer跨设备同步我的应用程序数据。设置看起来很简单,但我担心如果用户数据以某种方式损坏会发生什么 - 无论是我的错误还是苹果的错误。

如果我存储了我的数据的每日备份(例如使用Ole Begemann 的技术),任何人都可以概述我需要采取的步骤来将其恢复到NSPersistentCloudKitContainer?

我想我可以在还原点清除 CloudKit 中的所有内容purgeObjectsAndRecordsInZone(with:in:completion:)- 但是当其他设备尝试同步其数据时仍然可能存在问题。

似乎大多数开发人员都将 CloudKit 数据视为备份。这足够可靠吗?

0 投票
1 回答
14 浏览

ios - 是否有必要将合并策略与 CoreData 并允许外部存储一起使用以避免崩溃?

我使用 CoreData + NSPersistentCloudKitContainer 来备份我的模型。我的一个 NSManagedObject 有一张存储为二进制数据的图片,并检查了允许外部存储。

这是非常随机的,但有时当我打电话时,context.save()即使我没有编辑此对象,我也会遇到合并冲突。实际上,我只是尝试创建一个新对象(与具有冲突的对象不同的类型)并且崩溃发生在另一个对象上。

除了 的自引用外,Everyting 的值相同External Data Reference

我怀疑数据引用在应用程序加载和我第一次调用备份之间发生了变化。但是长度是一样的,因为这个值在用户端没有改变,所以我不明白为什么引用会改变。

我现在不使用合并策略,它只是不保存。

我可以使用 NSMergeByPropertyObjectTrumpMergePolicy 来确保安全,还是应该找出引用更改的原因?

0 投票
0 回答
13 浏览

core-data - NSPersistentCloudKitContainer 卸载安装后返回 nil

我正在更改当前的 Coredata 以与 iCloud 同步。它正确地保存在数据库中并获取,但问题是当我删除应用程序并再次重新安装它时,它不显示数据。

我保存了 .sqlite 应用内组,以便与我的扩展程序共享它。CloudKit 功能已开启。