4

查看EKCalendar 的文档。这很简单,它有五个属性,其中只有一个是一个名为title. 现在,如果您的 iPhone 上有多个日历并打开 iCal 的日历设置,您可以看到所有日历都由另一个名为account.

我想不通的是如何做同样的事情,因为虽然你可以看到accountNSLogEKCalendar实例,但你无法访问它:

EKCalendar <0x1851b0> {title = 工作;类型 = CalDAV;帐户 = some@addr.ess; 允许修改=是;颜色 = 0.690196 0.152941 0.682353 1.000000}

没有account财产,并且尝试访问valueForKey:@"account"也不起作用,这不足为奇。

那我怎么去那个account属性?这么简单的事情,把我逼疯了!非常感谢您的帮助。

更新:从 iOS 5.0 开始,EKCalendar 有一个source属性.

4

3 回答 3

4

如果您在 iOS 4.3 (Simulator) SDK 上使用class-dump,您会看到有一个 read-only 方法-(id)accountName。但是,由于它不在标头中,很遗憾它是私有 API,如果您希望您的应用在 App Store 中被接受,则不能使用它。

我建议您向 Apple 提出改进请求,要求公开此方法。

想一想:如果你真的很绝望,为什么不解析-[EKCalendar description]? 这是非常非常非常糟糕的风格,将来可能会崩溃,但您可能会通过 App Store 审查 ;) 特别是如果您仅将其用于分组并编写极具防御性的代码,因此它不会中断但如果description方法的输出格式不同,根本不会分组。

于 2011-06-20T21:28:39.397 回答
2

此信息在 4.0 SDK 中不可用。您是否查看过即将推出的 SDK 的开发者预览版,看看其中是否包含更多信息?

于 2011-06-20T21:38:13.547 回答
1

在 iOS6 上?私有财产似乎[EKCalendar accountName]消失了。并且[EKCalendar description]不再包含帐户。:

EKCalendar <0x200f50e0> {title = test@gmail.com; 类型=交换;允许修改=是;颜色=#44A703;}

提供[EKCalendar source]了一个EKSource对象,它有一个标题,但这不是我在创建帐户时键入的名称,而是一个更通用的名称,例如 Exchange、Other、CalDAV。

于 2013-03-05T09:08:40.060 回答