0

次のようにモデル化された、すべてのカレンダーイベントを格納する 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. 
4

2 に答える 2

1

繰り返しテーブルを使用してすべてのイベントを追跡しながら、繰り返しイベントを EventInfo テーブルの単一イベントに引き出します。したがって、Repeat テーブルはすべての繰り返されるイベントに関する共通の情報を処理しますが、繰り返されるイベントのインスタンスごとに個別の EventInfo レコードを作成します。以下のような

イベント情報

  • 項目 1 - 繰り返しなし
  • 項目 2 - 繰り返し (繰り返し ID 1)
  • 項目 3 - 繰り返し (繰り返し ID 1)
  • 項目 4 - 繰り返し (繰り返し ID 2)
  • 項目 5 - 繰り返し (繰り返し ID 2)
  • 項目 6 - 繰り返さない

繰り返す

  • 繰り返し 1 - 共通情報を繰り返します
  • 繰り返し 2 - 共通情報を繰り返します
于 2012-08-15T16:34:35.370 に答える
0

繰り返しイベントごとにTimerEvent独自の個体を作成し、 に属性を追加し、 の検索を追加して、現在のイベントに関連付けられているすべてのイベントを取得することで解決しました。ID は、新しい繰り返しイベントが作成されるたびに割り当てられて増加する新しいキーから生成されます。EventInforepeatIDTimerEventrepeatIDNSUserDefault

于 2012-08-16T04:17:37.190 に答える