Подтвердить что ты не робот

EKParticipant в EventKit ошибочно возвращает NO для свойства isCurrentUser

Я пытаюсь определить, какой из участников EKEvent's (EKPartipants) является текущим пользователем. В iOS6 EKParticipant предоставляет свойство, называемое isCurrentUser

http://developer.apple.com/library/ios/#documentation/EventKit/Reference/EKParticipantClassRef/Reference/Reference.html#//apple_ref/occ/cl/EKParticipant

который должен предоставлять именно эту информацию. К сожалению, каждый раз, когда я просматриваю свойство EKParticipant's isCurrentUser, он возвращает NO, даже если это явно не так.

Любая помощь будет очень признательна!

Обновленные результаты:

Если вы посмотрите организатор мероприятия, он правильно вернет isCurrentUser == YES, если вы являетесь организатором. Но, если вы извлекаете себя из набора участников, он возвращает isCurrentUser == NO.

Пример вывода консоли с двумя разными объектами EKParticipant, относящимися к одному и тому же человеку с тем же адресом электронной почты:

(lldb) po [ekEvent.attendees objectAtIndex:3]
$20 = 0x208c1220 EKAttendee <0x208c1220> {UUID = CCD17C5E-FCB5-4BC9-8D9E-7E957B20025D;       
name= ----- -----; email = [email protected]; status = 2; role = 0; type = 1}

(lldb) print [(EKParticipant *)[ekEvent.attendees objectAtIndex:3] isCurrentUser]
(BOOL) $15 = NO

(lldb) po ekEvent.organizer
$19 = 0x20b720e0 EKOrganizer <0x20b720e0> {UUID = FD0E434D-2C9F-4A6E-98DC-    
7FA6F27C3D1E; name = ----- -----; email = [email protected]; isSelf = 1}

(lldb) print ekEvent.organizer.isCurrentUser
(BOOL) $16 = YES
4b9b3361

Ответ 1

Организатор события не по умолчанию в списке участников, вы явно добавляете его в качестве участников.

Организатор считается отличным от участников и изображен с помощью органайзера атрибутов. Если вы используете этот объект для доступа к isCurrentUser, он предоставит вам значение Да.

Если вы явно добавляете идентификатор электронной почты организатора в качестве участника, это считается другим пользователем, для этого вам нужно сравнить URL-адрес посетителей и проверить.

Пример: Пользователь a.. @a.com организовал встречу или мероприятие и предложил b.. @b.com то у вас будет только b.. @b.com и.. @a.com будут доступны в качестве организатора.

Если вы добавили a.. @a.com в качестве участника, то тогда его свойство isCurrentUser равно No, и вы можете проверить, сравнив сам URL-адрес участников с организатором.

Ответ 2

Да, вы можете определить, какой участник ekevent является текущим пользователем.

Я нашел способ сделать работу isCurrentUser для любого участника. Согласно fooobar.com/info/194198/..., мы можем получить доступ к электронной почте с помощью EKParticipant.URL.resourceSpecifier

Хорошо, вы получите правильное письмо, ожидающее двух парней. Один из них - организатор, другой - текущий пользователь, который использует AppleID на этом устройстве. (Если событие является приглашением)

Когда вы обращаетесь к этим двум парням, их resourceSpecifier это что-то вроде

/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/

не формат электронной почты.

UPDATE

Он работает для моего iPhone на 9.3.2.

Я могу различить, какой из них является текущим пользователем.

При разговоре с организатором мероприятия, если нет приглашенного, организатор будет равен нулю, это событие будет создано текущим пользователем, но organizer.isCurrentUser будет NO. Потому что organizer nil.

Когда пользователь приглашает некоторых других для участия в этом событии, organizer будет не ноль, а его isCurrentUser будет YES