如何基于CKQueryNotification知道要删除的实体?

我在Cloudkit中有两种loggingtypes: 服务目标 ,它对应于coredata模型中的实体: ServiceGoal 。 我可以创build,更新或删除它们。 问题是关于删除。

我使用CloudKit获取待处理的通知。 我可以确定基于queryNotificationReason属性的是什么样的操作。 如果是删除,则无法确定应使用相关标识从核心数据库中删除哪种财产。

任何方式如何做到这一点? 到目前为止,我做了这样的recordID我从CKQueryNotification获取:

 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 。 这意味着loggingID必须包含处理删除所需的所有信息。

我通过创build包括loggingtypes和密钥的loggingID来解决这个问题。 然后在需要时,我可以将logging标识的logging名称分解为实体名称和密钥,并根据需要使用这些值。