次のようにモデル化された、すべてのカレンダーイベントを格納する SQLite データベースがあります。
TimerEvent
*Attributes
-date
-dateForMark
-reminder
*Relationships
-eventInfo (<->)
EventInfo
*Attributes
-location
-notes
-recurringKey
-reminderKey
-title
*Relationships
-timerEvent (<->)
-repeat (<->>)
Repeat
*Attributes
-repeatDate
*Relationships
-eventInfo(<->>)
イベントを作成すると、TimerEvent が作成され、3 つの日付値がプラグインされます。次に、EventInfo エンティティとの関係が作成され、イベントの場所、タイトル、メモ、リマインダー/繰り返しキーがプラグインされます。 recurring キーが -1 でない場合、TimerEvent 日付とユーザー入力から決定された日付の間にある繰り返し日付の数に基づいて Repeat エンティティが作成されます。
私のカレンダーは、すべての日付を読み取って表示し、AgendaView で「親」エンティティからのすべての情報を表示できます (EventInfo は Repeat の親エンティティではありません。作成できる多くの繰り返し)。編集時に問題が発生します... 繰り返しイベントの 1 つを編集したい場合、そのイベント (次のイベントや前のイベントではなく) のみを編集し、Repeat オブジェクトを EventInfo オブジェクトまでトレースし、その情報を変更しました。イベントごとに情報を変更します。これに対する2つの解決策しか想像できません。
1. Add extra NSString attributes to repeat events for when events are edited
2. Create a new event JUST for that object, nullify the existing relationship,
and use the repeatDate as the main date.