我在Cloudkit中有两种记录类型:服务和目标,它对应于coredata模型中的实体:Service
和Goal
。我可以创建,更新或删除它们。问题是删除。
我使用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)
}
})
}
答案 0 :(得分:1)
删除的查询通知只会为您提供CKRecordID
。这意味着记录ID必须包含处理删除时需要知道的所有信息。
我通过创建包含记录类型和密钥的记录ID来解决此问题。然后在需要时,我可以将记录ID的recordName拆分为实体名称和密钥,并根据需要使用这些值。