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,我们可以通过EKParticipant.URL.resourceSpecifier
获得与会者的电子邮件
那么,你会得到正确的电子邮件期望两个人。 一个是组织者,另一个是当前在该设备上使用AppleID的用户(如果该事件是邀请)
当你访问这两个人,他们的resourceSpecifier
是类似的
/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/
不是电子邮件格式。
UPDATE
它适用于我的iPhone 9.3.2。
我可以区分参加者中的哪个用户。
当与事件组织者交谈时,如果没有被邀请者,组织者将无意义这个事件是由当前用户创build的,但organizer.isCurrentUser
。当前用户将是NO
。 因为organizer
是nil
。
当用户邀请其他人参加这个活动时, organizer
将不是零,其isCurrentUser
将是YES