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,并插入三个日期值。然后,创建与 EventInfo 实体的关系,插入事件的位置、标题、注释和提醒/重复键。如果如果重复键不是 -1,则根据 TimerEvent 日期和用户输入确定的日期之间的重复日期数创建重复实体。

我的日历比读取所有日期,显示它们,然后在我的 AgendaView 中可以显示来自“父”实体的所有信息(EventInfo 不是重复的父实体。它只是与可以创建的许多重复)。编辑时出现问题...如果我想编辑其中一个重复事件,仅编辑该事件(不是跟随者或之前的),我将重复对象追溯到 EventInfo 对象,更改该信息会更改每个事件的信息。我只能想象两种解决方案:

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具有它自己的个体来解决,向 's 添加一个属性,添加对 's 的搜索以获取与当前事件相关联的所有那些。ID 是从每次创建新的重复事件时分配和递增的新键生成的。EventInforepeatIDTimerEventrepeatIDNSUserDefault

于 2012-08-16T04:17:37.190 回答