Доступ к календарям в программе Mac Objective-C

Этот фрагмент кода предназначен для печати моего календаря по умолчанию в iCal на моем Mac, но вместо этого возвращает (null). Нужно ли мне что-то менять в коде или настройках, чтобы получить доступ к своим календарям? Я запускаю это в Xcode 4.5.2.

#import <Foundation/Foundation.h>
#import <EventKit/EventKit.h>


int main(int argc, const char * argv[])
{

    EKEventStore *store = [[EKEventStore alloc] initWithAccessToEntityTypes:EKEntityMaskEvent];
    NSLog(@"%@",[store defaultCalendarForNewEvents].calendarIdentifier);
    return 0;
}

person ripperbone    schedule 22.01.2013    source источник


Ответы (1)


Для меня приведенный выше код правильно возвращает идентификатор календаря по умолчанию (на 10.8.2).

Ваше приложение находится в песочнице? Результат будет (null), если вы не разрешите доступ к календарю в песочнице:

введите здесь описание изображения

Я не уверен, что это вообще возможно, но также проверьте, выбран ли календарь по умолчанию. (У меня есть один выбранный, и я не могу установить для выбора значение none в Calendar.app).

person Joris Kluivers    schedule 22.01.2013
comment
Спасибо за ваше предложение. У меня 10.7.5, и я думаю, что это может быть проблемой, но я не уверен, где вы нашли флажок, чтобы разрешить доступ к данным календаря. Это настройка в Xcode где-то? - person ripperbone; 22.01.2013
comment
Да, это параметр com.apple.security.personal-information.calendars в вашем файле прав песочницы. Вы можете настроить песочницу, перейдя на вкладку «Сводка» вашей целевой конфигурации. Руководство по дизайну песочницы приложения: быстрый старт может оказаться полезным. - person Joris Kluivers; 22.01.2013
comment
Я нашел варианты для песочницы, когда создавал новое приложение Cocoa (я выбирал инструмент командной строки). Я убедился, что режим песочницы не отмечен, но все равно не повезло. Я не думаю, что для доступа к данным календаря требуется подпись кода, верно? Я не получаю ошибок в Xcode, но нашел интересное сообщение в консоли: 23.01.13 12:33:50.309 getEvents: (null) 23.01.13 12:33:50.312 com.apple.debugserver-194 : 2 +0,172950 сек [11f5/1a03]: ошибка: ::read ( 1, 0x10a3c9a60, 1024 ) => -1 err = Неверный файловый дескриптор (0x00000009) - person ripperbone; 23.01.2013
comment
Для меня это, казалось, работало только в песочнице. Я не нашел никакой документации о EKEventStore и песочнице, поэтому я не уверен, является ли это преднамеренным поведением или ошибкой. - person Joris Kluivers; 23.01.2013