iphone - EKParticipant en EventKit devuelve errĂ³neamente NO para la propiedad isCurrentUser
ios (2)
El organizador del evento no está por defecto en la lista de asistentes, usted lo agrega explícitamente como asistentes.
El organizador se considera diferente de los asistentes y se representa con un organizador de atributos. Si usa ese objeto para acceder a isCurrentUser, le proporcionará un valor Sí.
Si agrega explícitamente la identificación de correo electrónico del organizador como asistente, se considera un usuario diferente, para eso necesita comparar la URL de los asistentes y verificar.
Ejemplo: el usuario a .. @ a.com organizó una reunión o evento e invitó a b .. @ b.com, luego, en los asistentes solo tendrá b .. @ b.com y a .. @ a.com estarán disponibles como organizador.
En caso de que agregue a .. @ a.com como asistente, su propiedad isCurrentUser es No y puede verificar comparando la cadena de URL del asistente con el organizador.
Estoy intentando determinar cuál de EKEvent''s
asistentes de un EKEvent''s
( EKPartipants
) es el usuario actual. En iOS6, EKParticipant
expone una propiedad llamada isCurrentUser
que se supone debe proporcionar precisamente esta información. Desafortunadamente, cada vez que EKParticipant''s
propiedad EKParticipant''s
isCurrentUser
, devuelve NO, incluso cuando ese claramente no es el caso.
Cualquier ayuda sería muy apreciada!
Resultados actualizados:
Si busca el organizador del evento, devuelve correctamente isCurrentUser == YES
si usted es el organizador. Pero, si se recupera del conjunto de asistentes, devuelve isCurrentUser == NO
.
Ejemplo de salida de consola con los dos objetos EKParticipant diferentes que se refieren a la misma persona con la misma dirección de correo electrónico:
(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
Sí, puede determinar qué asistente de ekevent es el usuario actual.
Encontré una manera de hacer que isCurrentUser
funcione para cualquier participante. Según https://.com/a/17222036/3683845 podemos obtener el correo electrónico del asistente con EKParticipant.URL.resourceSpecifier
Bueno, recibirá el correo electrónico correcto, espere dos chicos. El uno es el organizador, otro es el usuario actual que usa el ID de Apple en este dispositivo. (Si el evento es una invitación)
Cuando accedes a estos dos chicos, su resourceSpecifier
es algo así como
/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/
No es el formato de correo electrónico.
ACTUALIZAR
Funciona para mi iPhone en 9.3.2.
Puedo distinguir cuál es el usuario actual en los asistentes.
Cuando hable con el organizador del evento, si no hay un invitado, el organizador será nulo, lo que significa que este evento es creado por el usuario actual, pero organizer.isCurrentUser
será NO
. Porque el organizer
es nil
.
Cuando el usuario invite a otros a asistir a este evento, el organizer
no será nulo y su isCurrentUser
será YES