ical4j-基于UID的查找事件

时间:2018-09-10 11:52:19

标签: java calendar ical4j

我正在使用ical4j创建我的.ical-文件并保存事件。 但是如何在日历中找到存储的VEvent?

我有以下代码,但是不起作用? 我得到了日历->这可以正常工作了,并且已经调试了

public VEvent findEvent(CalendarExtern calendarExtern, String hashId) throws IOException, ParserException {

    Calendar calendar = readCalenderFromFile(calendarExtern);

    for (Component component : calendar.getComponents(Component.VEVENT)) {
          if (hashId.equals(component.getProperty(Property.UID))) {
              VEvent event = (VEvent) component;
                return event;
          }
        } 

    return null;
}

有什么想法吗?非常感谢

2 个答案:

答案 0 :(得分:1)

component.getProperty(Property.UID)返回一个属性,因此您真正想要做的是:

if (hashId.equals(component.getProperty(Property.UID).getValue()))...

当然,根据您的输入,您可能需要在执行getValue()之前检查没有UID属性的组件。

答案 1 :(得分:0)

使用ComponentGroup查找事件的最新版本的替代方法:

ComponentGroup<VEvent> group = new ComponentGroup(
         calendar.getComponents(Component.VEVENT),
         new Uid(hashId));

return group.getLatestRevision();