EventKit中的EKParticipant错误地返回了isCurrentUser属性的NO

我试图确定哪一个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 = --------wa@me.com; 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 = --------wa@me.com; isSelf = 1} (lldb) print ekEvent.organizer.isCurrentUser (BOOL) $16 = YES 

事件的组织者并不默认在与会者列表中,您明确地将其添加为与会者。

组织者被认为是与会者不同,并与属性组织者描述。 如果你使用这个对象来访问isCurrentUser它会给你提供值是的。

如果您明确将pipe理器电子邮件ID添加为与会者,则会被视为不同的用户,因此您需要比较与会者的url和检查。

示例:用户a .. @ a.com组织了一个会议或活动,并邀请b .. @ b.com然后在与会者中您将只有b .. @ b.com和a .. @ a.com将作为组织者。

如果您将.. @ a.com添加为与会者,则其属性isCurrentUser为否,您可以通过比较与会者URLstring本身与pipe理器进行检查。

是的,您可以确定ekevent的哪个参与者是当前用户。

我find了一种方法使isCurrentUser为任何参与者工作。 根据https://stackoverflow.com/a/17222036/3683845,我们可以通&#x8FC7;EKParticipant.URL.resourceSpecifier获得与会者的电子邮件

那么,你会得到正确的电子邮件期望两个人。 一个是组织者,另一个是当前在该设备上使用AppleID的用户(如果该事件是邀请)

当你访问这两个人,他们的resourceSpecifier是类似的

/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/

不是电子邮件格式。

UPDATE

它适用于我的iPhone 9.3.2。

我可以区分参加者中的哪个用户。

当与事件组织者交谈时,如果没有被邀请者,组织者将无意义这个事件是由当前用户创build的,但organizer.isCurrentUser 。当前用户将是NO 。 因为organizernil

当用户邀请其他人参加这个活动时, organizer将不是零,其isCurrentUser将是YES