ios - 我怎么知道要根据 CKQueryNotification 删除哪个实体?

标签 ios swift cloudkit

我在 Cloudkit 中有两种记录类型:ServiceGoal,它对应于实体:ServiceGoal 在核心数据模型中。我可以创建、更新或删除它们。问题是关于删除。

我使用 CloudKit 获取待处理的通知。我可以根据 queryNotificationReason 属性确定它是哪种操作。如果是删除,则无法确定我应该从具有相关 ID 的核心数据数据库中删除哪种属性。

有什么办法吗?到目前为止,对于从 CKQueryNotification 获得的 recordID,我是这样做的:

class func delete(with recordID: CKRecordID) {

    MagicalRecord.save({ context in

        if let service = Service.find(withIdentifier: recordID.recordName, in: context) {

            service.mr_deleteEntity(in: context)

        } else if let goal = Goal.find(withIdentifier: recordID.recordName, in: context) {

            goal.mr_deleteEntity(in: context)
        }
    })
}

最佳答案

删除查询通知只给你一个CKRecordID。这意味着记录 ID 必须包含处理删除所需的所有信息。

我通过创建包含记录类型和键的记录 ID 来解决这个问题。然后在需要时,我可以将记录 ID 的 recordName 拆分为实体名称和键,并根据需要使用这些值。

关于ios - 我怎么知道要根据 CKQueryNotification 删除哪个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40996718/

相关文章:

iphone - twitter 上的 SimulTweet 实现?

ios - 如何在 Swift 中实现这种圆形 View

xcode - 如何在 tabBar swift 中更改项目或图像颜色?

swift - 如果 playOnce 在 Swift 中完成,则结束或关闭 Lottie 动画 View

ios - 如何使用CloudKit的CKShare创建共享?

ios - 如何使用 Swift 将音频文件保存到 iCloud?

ios - 更新通知的替代方法不起作用

ios - 设置 rootView.appProperties 不会重新渲染根组件

ios - 为什么DispatchGroup会干扰主队列?

ios - 我如何在嵌入 UINavigationController 的另一个 Storyboard 上以模态方式呈现 UIViewController?