我有一个存储我所有日历事件的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日期和用户输入确定的日期之间的重复日期数创建Repeat实体。
我的日历比读取所有日期,显示它们,然后在我的AgendaView中可以显示来自“父”实体的所有信息(EventInfo不是重复的父实体。它只有一个到一个 - 许多与可能创造的重复的关系。编辑时会出现问题...如果我想编辑其中一个重复事件,只编辑该事件(不是后面的那个,或之前的那个),我将Repeat对象追溯到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.
答案 0 :(得分:1)
我会将重复事件拉出到EventInfo表中的单个事件,同时使用重复表来跟踪所有事件。因此,重复表处理有关所有重复事件的公共信息,同时为重复事件的每个实例创建单独的EventInfo记录。如下面
答案 1 :(得分:0)
通过为每个重复事件创建一个拥有TimerEvent
的个人EventInfo
来解决问题,向repeatID
添加了TimerEvent
个属性,添加了对{{repeatID
的搜索1}}以获取与当前事件关联的所有内容。 ID是从新的NSUserDefault
密钥生成的,每次创建新的重复事件时都会分配和增加。