2016-12-06 8 views
0

У меня есть два типа записей в Cloudkit: Service и Гол и соответствует Entities: Service и Goal в CoreData модели. Я могу создавать, обновлять или удалять их. Вопрос заключается в удалении.Как узнать, какой объект удалить на CKQueryNotification?

Я получаю ожидающие уведомления с помощью 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) 
     } 
    }) 
} 
+0

Необходимо уточнить свой вопрос. Это расплывчато. – rmaddy

+0

Я обновил вопрос ... –

ответ

1

Уведомление запрос на удаление только дает вам CKRecordID. Это означает, что идентификатор записи должен включать всю информацию, необходимую для обработки удаления.

Я решаю эту проблему, создавая идентификаторы записей, которые включают тип записи и ключ. Затем, когда это необходимо, я могу разбить имя записи ID записи в имя и ключ сущности и использовать эти значения по мере необходимости.

+0

это может работать;) –