Я делаю одно приложение, которое может запускать AppleScript через NSAppleScript. Все было хорошо, но я не смог понять, как передавать информацию о дате из моего приложения в AppleScript. (Поскольку AppleScript имеет тип даты, я предполагаю, что это возможно) Способ передачи параметров AppleScript осуществляется через NSAppleEventDescriptor. Я узнал от Google, что я мог бы передать его в качестве typeLongDateTime типа:Как передать информацию о дате в AppleScript?
- (id)initWithDate:(NSDate *)date {
LongDateTime ldt;
UCConvertCFAbsoluteTimeToLongDateTime(CFDateGetAbsoluteTime((CFDateRef)date), &ldt);
return [self initWithDescriptorType:typeLongDateTime
bytes:&ldt
length:sizeof(ldt)];
}
К сожалению, тип LongDateTime уже давно ушел, потому что я использую Swift и под OS X 10.10. Даже функция основных служб UCConvertCFAbsoluteTimeToLongDateTime уже удалена из 10.10.3.
Теперь я застрял.
Есть ли у вас идеи, которые вдохновляют?
Спасибо, Мартин. Ваше предложение работает. Однако, похоже, один сбой: разница секунд между 1904 и 2001 годами должна быть 3061180800 (а не 3061152000), пожалуйста, подтвердите? – Terry
Я уверен, что 3061152000 верен. Попробуйте 'let date = NSDate (timeIntervalSinceReferenceDate: -3061152000); println (date) 'Выход:' 1904-01-01 00:00:00 + 0000'. –
Мартин, я думаю, ты прав. Но причина, по которой я думал, что это неправильно, - это то, что я получил неправильное значение даты в AppleScript при прохождении longDateTime в пути 3061152000. Я подозреваю, что это может иметь какое-то отношение к часовому поясу. Я еще не понял это полностью. – Terry