EKParticipant在EventKit错误地返回NO的isCurrentUser财产(EKPa

2019-08-18 00:52发布

我试图以确定其中的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

Answer 1:

事件的组织者是不是默认的与会者列表,您明确把他加为与会者。

主办方认为,从与会者不同,描述与属性组织者。 如果您使用对象来访问isCurrentUser它会提供你的价值是。

如果你明确添加组织者电子邮件ID为与会者它被认为是不同的用户,对于你需要比较与会者URL和检查。

例如:用户A .. @ a.com举办的会议或活动,并邀请b .. @ b.com然后参加你将有仅有B .. @ b.com和.. @ a.com将作为组织者。

如果你添加一个.. @ a.com为与会者还那么它的性能isCurrentUser是没有,您可以通过比较与会者URL字符串本身与组织者联系。



Answer 2:

是的,你可以决定哪些ekevent的参加者是当前用户。

我发现了一个方法,使isCurrentUser工作任何参与者。 据https://stackoverflow.com/a/17222036/3683845我们可以得到与会者的电子邮件EKParticipant.URL.resourceSpecifier

那么,你会马上想到电子邮件两个家伙。 一个是组织者,另一个是谁使用的AppleID在此设备上当前用户(如果事件是一个邀请)

当您访问这两个家伙,他们resourceSpecifier是一样的东西

/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/

不是电子邮件格式。

UPDATE

它适用于我在9.3.2的iPhone。

我可以区分哪一个是在出席者当前用户。

当聊到事件的组织者,如果没有被邀请主办单位将是零含义是由当前用户创建的这个事件,但organizer.isCurrentUser将是NO 。 由于organizernil

当用户邀请一些人来参加本次活动, organizer将不为零及其isCurrentUser将是YES



文章来源: EKParticipant in EventKit erroneously returns NO for isCurrentUser property