2016-12-06 3 views
0

私はCloudkitに2つのレコードタイプがあります。サービス目標をし、それがエンティティに対応:ServiceGoalをcoredataモデルに。私はそれらを作成、更新、または削除することができます。問題は削除に関することです。CKQueryNotificationのベースを削除するエンティティはどのように知っていますか?

CloudKitを使用して保留中の通知を取得します。 queryNotificationReasonプロパティに基づいてどのような操作を行うかを判断できます。それが削除の場合、関連するIDを持つコアデータデータベースから削除する必要があるプロパティの種類を判断する方法はありません。

どうすればよいですか?これまでのところ、私はレコードIDのために、このようにそれをやった私は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に含まれている必要があります。

この問題は、レコードタイプとキーを含むレコードIDを作成することで解決します。その後、必要に応じてレコードIDのrecordNameをエンティティ名とキーに分割し、必要に応じてそれらの値を使用することができます。

+0

これはうまくいくかもしれません;) –

関連する問題