我想获得日历事件(EKEvent)的旅行时间,但是我得到了一个错误:Value of type 'EKEvent' has no member 'travelTime'。
当我打印一个EKEvent时,我得到了这个:

EKEvent <0x79f6f460>
{
EKEvent <0x79f6f460>
{ title = Test;
location = Foobar;
calendar = EKCalendar <0x7ba6f9a0> {title = Calendar; type = Local; allowsModify = NO; color = #1BADF8;};
alarms = (null);
URL = (null);
lastModified = 2016-04-25 17:56:58 +0000;
startTimeZone = Europe/Amsterdam (GMT+2) offset 7200 (Daylight);
startTimeZone = Europe/Amsterdam (GMT+2) offset 7200 (Daylight)
};
location = Foobar;
structuredLocation = EKStructuredLocation <0x79e722e0> {title = Foobar; address = (null); geo = (null); abID = (null); routing = (null); radius = 0.000000;};
startDate = 2016-04-25 19:15:00 +0000;
endDate = 2016-04-25 20:15:00 +0000;
allDay = 0;
floating = 0;
recurrence = (null);
attendees = (null);
travelTime = 30 minutes;
startLocation = (null);
};有人知道这是怎么回事吗?(我可以访问像startDate这样的东西。)
发布于 2016-04-27 05:08:01
这似乎是以秒为单位返回旅行时间属性:
let travelTime = yourEKEvent.valueForKey("travelTime")!显然,在travelTime类中没有可访问的EKEvent属性,所以我猜它在它的超类中的某个位置。在内置的iOS日历中,当您将旅行时间添加到事件中时,选项中的详细信息如下:
事件警报将考虑到这一时间,您的日历将在此期间被阻塞。

在查看了EKAlarms文档之后,我认为它可能存储在relativeOffset属性中。警报应该存储在EKCalendar超类中。
还可以通过设置值方法更新值:
yourEKEvent.setValue(300, forKey: "travelTime")
然后使用如下方法重新保存事件:
func updateEvent(event: EKEvent)
{
do {
try eventStore.saveEvent(event, span: .ThisEvent)
savedEventId = event.eventIdentifier
} catch {
print("Bad things happened")
}
}https://stackoverflow.com/questions/36748720
复制相似问题