Как получить доступ к свойству EKCalendar `account` - PullRequest
4 голосов
/ 21 июня 2011

Взгляните на документацию для EKCalendar . Это довольно просто, у него есть пять свойств, только одно из которых - строка с именем title. Теперь, если у вас есть несколько календарей на вашем iPhone, и вы открываете настройки Календаря iCal, вы можете видеть, что все календари красиво сгруппированы по другой строке под названием account.

Что я не могу понять, так это как сделать то же самое, потому что, хотя вы можете видеть account, когда вы NSLog a EKCalendar, вы не можете получить к нему доступ:

EKCalendar <0x1851b0> {title = Work; type = CalDAV; account = some@addr.ess; allowModify = YES; цвет = 0,690196 0,152941 0,682353 1,000000}

Нет свойства account, и попытка доступа к valueForKey:@"account" также не работает, что неудивительно.

Так, как мне добраться до этого свойства account? Такая простая вещь, сводящая меня с ума! Помощь очень ценится.

Обновление: начиная с iOS 5.0, EKCalendar имеет свойство source .

Ответы [ 3 ]

4 голосов
/ 21 июня 2011

Если вы используете class-dump в iOS 4.3 (Simulator) SDK, вы увидите, что есть метод только для чтения -(id)accountName. Однако, поскольку он не находится в заголовках, это, к сожалению, частный API, и вы не можете использовать его, если хотите, чтобы ваше приложение было принято в App Store.

Я рекомендую вам подать запрос на улучшение в Apple с просьбой обнародовать этот метод.

Хотя подумайте: если вы действительно в отчаянии, почему бы не проанализировать вывод -[EKCalendar description]? Это очень, очень плохой стиль, и он, вероятно, сломается в будущем, но вы можете сделать это через обзор App Store;) В частности, если вы используете его только для группировки и пишете свой код крайне оборонительно, чтобы он не ломался, просто не группируется, если вывод метода description будет отформатирован по-другому.

2 голосов
/ 21 июня 2011

Эта информация недоступна в 4.0 SDK.Вы смотрели на предварительные версии разработчика для предстоящего SDK, чтобы увидеть, может ли он содержать больше информации?

1 голос
/ 05 марта 2013

а на iOS6?Кажется, частная собственность [EKCalendar accountName] исчезла.И [EKCalendar description] больше не содержит аккаунта.:

EKCalendar <0x200f50e0> {title = test@gmail.com;тип = обмен;allowModify = YES;color = # 44A703;}

[EKCalendar source] предоставляет объект EKSource, который имеет заголовок, но это не то имя, которое я набрал при создании учетной записи, но кажется более общимимя, например Exchange, Other, CalDAV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...