- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个应用程序,该应用程序使用 NSPersistentCloudKitContainer
在 iOS 15 中使用新的共享支持.我没有办法告诉 Core Data 一个对象或一组对象不再共享。
例如,如果我创建一组对象,然后调用 share(_:to:completion:)
,对象被正确共享并移动到新的自定义 CKRecordZone
,正如预期的那样。
现在,如果用户停止使用 UICloudSharingController
共享对象, CKShare
创建的 Core Data 已从 CloudKit 中正确删除,但对象仍在自定义区域中,Core Data 仍具有原始 CKShare
与这些对象相关联。所以,当我调用 fetchShares(matching:)
,我仍然得到 CKShare
,但当然,这不再有效。过去,在我自己的代码中,我会使用 UISharingController
s 委托(delegate)获取用户停止共享的通知,然后更新我的模型。但似乎没有办法告诉 Core Data 这个变化。
通过将应用程序移动到后台然后再前台,或者通过停止应用程序并重新启动来强制 Core Data 获取 CloudKit 更改不会导致 Core Data 注意到对共享的更改。
有谁知道如何告诉 Core Data 这些对象不再共享?
最佳答案
我通过始终检查共享是否确实存在于 CloudKit 中来解决这个问题,而不是依赖于 CKShare
的存在。来自 fetchShares(matching:)
.我得到 URL
来自 CKShare
从 fetchShares(matching:)
返回并称之为:
private func remoteShare(at url: URL) async throws -> CKShare? {
do {
let metadata = try await cloudKitContainer.shareMetadata(for: url)
return metadata.share
} catch let error as CKError {
if error.retryable {
throw RemoteError.retryable
} else if error.userInterventionRequiredError {
throw RemoteError.userInterventionRequired
} else if error.code == .unknownItem {
return nil
} else {
throw RemoteError.remoteFailure
}
} catch {
throw RemoteError.remoteFailure
}
}
}
如果我得到
unknownItem
这意味着 Remote 上没有共享,因此该对象实际上并未共享。
RemoteError
是我的自定义错误处理,我在
CKError
上有一些扩展对错误进行分类。
关于iOS15 : NSPersistentCloudKitContainer: how to un-share objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68604023/
我正在构建一个使用 NSPersistentCloudKitContainer 的应用程序。该应用程序没有共享功能,其唯一的后端功能是使用 cloudkit 容器在用户设备之间同步数据。该设置相当准系
我在我的生产应用中使用了 NSPersistentCloudKitContainer,但我的一些用户告诉我,在更新到引入了 NSPersistentCloudKitContainer 的最新版本后,数
我最近发布了一个使用 NSPersistentCloudKitContainer 的应用程序.在开发中,我的数据库按预期跨设备同步,但在生产中,我的数据库根本没有同步。调试完情况后,我意识到我必须将
我已将日期触发的本地通知添加到我的应用程序中,现在我希望用户能够在其拥有该应用程序的所有设备上获得他们在一台设备上设置的通知。我将他们设置的通知保存在核心数据实体中(保存通知标识符和它应该被触发的日期
我正在努力解决以下问题。尽管进行了深入搜索,但我还没有成功。 我的开发环境是 macOS Big Sur Beta 下的 Xcode 12.0 beta(但是,问题在 Catalina 下的 Xcod
集成 NSPersistentCloudKitContainer 非常简单,当用户在实现同步后添加数据时工作正常。但是,如果用户已经在不同的设备上添加了相同的数据,并且将在更新时启用同步,则所有设备上
我正在开发一个使用 NSPersistentCloudKitContainer 的应用程序在设备之间共享数据。核心数据模型有多个实体,其中两个实体通过与其各自逆的关系连接。我遇到的问题是,当我将关系设
所以我的问题如标题中所写,如果你可以使用 NSPersistentCloudKitContainer 在不同的应用程序之间共享数据,比如如果你有一个不同的 iPad 应用程序,一个不同的 iPhone
所以我的问题如标题中所写,如果你可以使用 NSPersistentCloudKitContainer 在不同的应用程序之间共享数据,比如如果你有一个不同的 iPad 应用程序,一个不同的 iPhone
Apple 推出了 NSPersistentCloudKitContainer iOS 13 使我们能够将 CloudKit 与 Core Data 结合使用。我几乎可以立即在不同的设备上运行它,但我
我正在使用 NSPersistentCloudKitContainer 来同步数据。使用新的 iCloud 内容刷新 UITableView 内容的正确代码是什么?如果我关闭 UITableView
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 在不同设备之间同步数据。它适用于新项目,但是当我将它用于旧项目时,使用 NSPersistentCont
我遵循了与“将核心数据与 CloudKit 结合使用”中相同的步骤: 新项目 启用核心数据 + Cloud Kit 添加 iCloud/CloudKit 授权 + 后台模式/远程通知授权。 在 iPh
我正在开发一个应用程序,该应用程序使用 NSPersistentCloudKitContainer 在 iOS 15 中使用新的共享支持.我没有办法告诉 Core Data 一个对象或一组对象不再共享
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 和 CoreData 在用户之间同步和共享一些记录。从 Apple website 中根据我的需要调整示
我正在使用 NSPersistentCloudKitContainer 通过 CloudKit 和 CoreData 在用户之间同步和共享一些记录。从 Apple website 中根据我的需要调整示
我知道这是一个常见问题,也许之前已经问过很多次了。我还知道如何通过启用应用程序组使用核心数据与应用程序扩展共享单个数据库。我现在正在使用 NSPersistentCloudKitContainer 同
我无法将令人兴奋的核心数据堆栈更改为 NSPersistentCloudKitContainer,因为这只是 iOS 13 及更高版本的支持功能,但我希望为 iOS 13 及更高版本设置该设置,同时为
我正在尝试使用 Core Data 和 CloudKit 构建一个非常基本的应用程序。我在我的 Mac 上登录了我的 CloudKit 帐户,然后按照说明运行 Apple 在他们的 website 上
我正在为我的核心数据应用程序使用 NSPersistentCloudKitContainer。在测试期间,我检查了在设备上所做的更改是否会在几秒钟内同步到 CloudKit。 但是,当我在设备上禁用
我是一名优秀的程序员,十分优秀!