EventKit 中的 EKParticipant 错误地为 isCurrentUser 属性返回 NO
Posted
技术标签:
【中文标题】EventKit 中的 EKParticipant 错误地为 isCurrentUser 属性返回 NO【英文标题】:EKParticipant in EventKit erroneously returns NO for isCurrentUser property 【发布时间】:2013-03-26 02:45:46 【问题描述】:我正在尝试确定 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
【问题讨论】:
这里有同样的问题...有什么新的吗?有什么方法可以从其他地方获取当前身份? 这种情况只发生在ios6还是7和8也发生? 【参考方案1】:活动的组织者默认不在参加者列表中,您明确将他添加为参加者。
组织者被认为与参加者不同,并用属性组织者来描述。如果您使用该对象访问 isCurrentUser ,它将为您提供值 Yes。
如果您将组织者电子邮件 ID 明确添加为与会者,则将其视为不同的用户,因此您需要比较与会者 URL 并检查。
示例:用户 a..@a.com 组织了一次会议或活动并邀请了 b..@b.com 那么在参加者中,您将只有 b..@b.com 并且 a..@a.com 将作为组织者提供。
如果您也将 a..@a.com 添加为参加者,则其属性 isCurrentUser 为否,您可以通过将参加者 URL 字符串本身与组织者进行比较来检查。
【讨论】:
【参考方案2】:是的,您可以确定 ekevent 的哪个参与者是当前用户。
我找到了一种让isCurrentUser
为任何参与者工作的方法。
根据https://***.com/a/17222036/3683845,我们可以通过EKParticipant.URL.resourceSpecifier
获取与会者的电子邮件
嗯,你会收到正确的电子邮件,预计两个人。一个是组织者,另一个是在此设备上使用 AppleID 的当前用户。(如果活动是邀请)
当您访问这两个家伙时,他们的resourceSpecifier
类似于
/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/
不是电子邮件格式。
更新
它适用于我在 9.3.2 上的 iPhone。
我可以区分与会者中的当前用户。
当与活动组织者交谈时,如果没有被邀请者,组织者将为 nil,这意味着此活动是由当前用户创建的,但 organizer.isCurrentUser
将是 NO
。因为organizer
是nil
。
当用户邀请其他人参加此活动时,organizer
将不为零,其isCurrentUser
将为YES
【讨论】:
以上是关于EventKit 中的 EKParticipant 错误地为 isCurrentUser 属性返回 NO的主要内容,如果未能解决你的问题,请参考以下文章