首页 文章

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

提问于
浏览
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实体的关系,插入事件的位置, Headers ,注释和提醒/重复键 . 如果重复键不是-1,重复实体是根据TimerEvent日期和用户输入确定的日期之间的重复日期数创建的 .

我的日历比读取所有日期,显示它们,然后在我的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 回答

  • 1

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

    活动信息

    • 第1项 - 不再重复

    • 第2项 - 重复(重复ID 1)

    • 第3项 - 重复(重复ID 1)

    • 第4项 - 重复(重复ID 2)

    • 第5项 - 重复(重复ID 2)

    • 第6项 - 不再重复

    重复

    • 重复1 - 重复常用信息

    • 重复2 - 重复常用信息

  • 0

    通过为每个重复事件创建一个单独的 TimerEvent 来解决自己的 EventInfo ,为 TimerEvent 添加了一个 repeatID 属性,添加了一个搜索 repeatID 's in order to get all of those associated to the current event. The ID',这是从一个新的 NSUserDefault 密钥生成的,每当一个新的重复事件发生时就会分配和递增创建 .

相关问题