Если бы я хотел просмотреть свой календарь 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) код в чей() селектор? Есть ли где-нибудь документация по whose()
, которая могла бы помочь?
whose()
работала в начальной реализации JXA с ошибками. Это не дубликат Q. - person Michael Scott Cuthbert   schedule 25.06.2016