保存/编辑重复日历事件的最佳方式

时间:2012-08-15 15:39:45

标签: ios sqlite core-data calendar

我有一个存储我所有日历事件的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. 

2 个答案:

答案 0 :(得分:1)

我会将重复事件拉出到EventInfo表中的单个事件,同时使用重复表来跟踪所有事件。因此,重复表处理有关所有重复事件的公共信息,同时为重复事件的每个实例创建单独的EventInfo记录。如下面

活动信息

  • 第1项 - 不重复
  • 第2项 - 重复(重复ID 1)
  • 第3项 - 重复(重复ID 1)
  • 第4项 - 重复(重复ID 2)
  • 第5项 - 重复(重复ID 2)
  • 第6项 - 不重复

重复

  • 重复1 - 重复共同信息
  • 重复2 - 重复共同信息

答案 1 :(得分:0)

通过为每个重复事件创建一个拥有TimerEvent的个人EventInfo来解决问题,向repeatID添加了TimerEvent个属性,添加了对{{repeatID的搜索1}}以获取与当前事件关联的所有内容。 ID是从新的NSUserDefault密钥生成的,每次创建新的重复事件时都会分配和增加。

相关问题