【发布时间】:2016-10-27 16:22:19
【问题描述】:
如果我想查看我的 OS X 日历(以前称为“iCal”)以查找摘要为“午餐”的事件,我可以执行以下操作:
var eventsContainer = Application('Calendar').calendars[0].events
for (var i = 0; i < eventsContainer.length; i++) {
var thisEvent = eventsContainer[i];
if (thisEvent.summary() == 'Lunch') { doSomething() }
}
即使考虑到仅搜索第一个日历这一事实,它也非常、非常、非常慢,因为每个 iCal 事件都需要转换为 Javascript 对象才能运行。这是一个明显更快的公式:
var foundEvents = Application('Calendar').calendars.events.whose({summary: 'Lunch'});
这非常适合精确匹配 summary == 'Lunch'。但是像 endDate: > new Date() 或 summary: /lunch/i 这样的比较呢?是否可以将本机 (ObjC) 代码传递给 who() 选择器? whose() 是否有任何文档可以提供帮助?
【问题讨论】:
-
这个相关问题:stackoverflow.com/questions/27072977/… 主要是关于让
whose()的简单形式在 JXA 的初始、有缺陷的实现中工作。这不是重复的 Q。
标签: javascript objective-c macos icalendar javascript-automation