28

我正在尝试确定哪个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
4

2 回答 2

1

默认情况下,活动的组织者不在与会者列表中,您明确将他添加为与会者。

组织者被认为与参加者不同,并用属性组织者来描述。如果您使用该对象访问 isCurrentUser,它将为您提供值 Yes。

如果您将组织者电子邮件 ID 明确添加为与会者,则将其视为不同的用户,因此您需要比较与会者 URL 并检查。

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

如果您也将 a..@a.com 添加为参加者,则其属性 isCurrentUser 为否,您可以通过将参加者 URL 字符串本身与组织者进行比较来检查。

于 2014-12-16T14:43:46.870 回答
1

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

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

好吧,你会收到正确的电子邮件,期待两个人。一个是组织者,另一个是在此设备上使用 AppleID 的当前用户。(如果活动是邀请)

当你访问这两个家伙时,他们resourceSpecifier就像

/aMTA3MDAxMjE0MzEwNzAwMb6Y7GrNw2OCqzA8gkpxsctNZJxrzpebHm/principal/

不是电子邮件格式。

更新

它适用于我在 9.3.2 上的 iPhone。

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

与活动组织者交谈时,如果没有被邀请者,组织者将为 nil,这意味着该活动是由当前用户创建的,但organizer.isCurrentUser将为NO. 因为organizernil

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

于 2016-05-18T09:46:27.580 回答