2011-06-20 35 views
4

請查看the documentation for EKCalendar。它非常簡單,它有五個屬性,其中只有一個是名爲title的字符串。現在,如果您的iPhone上有多個日曆,並且您打開了iCal的日曆設置,則可以看到所有日曆都很好地被稱爲account的另一個字符串分組。如何訪問EKCalendar的「帳戶」屬性

我想不出什麼,是怎麼做的一樣,因爲雖然你可以看到account當你NSLog一個EKCalendar例如,你不能訪問它:

EKCalendar < 0x1851b0> {title =工作; type = CalDAV; account = [email protected]; allowsMo​​dify = YES;顏色= 0.690196 0.152941 0.682353 1.000000}

沒有account財產,並試圖訪問valueForKey:@"account"不工作無論是勿庸置疑。

那麼我怎樣才能達到account屬性?這麼簡單的事情,讓我瘋狂!非常感謝幫助。

更新:自iOS 5.0,EKCalendar has a source property

回答

4

如果您在iOS 4.3(Simulator)SDK上使用class-dump,則會看到有一個只讀方法-(id)accountName。但是,由於它不在標題中,因此不幸的是私人API,如果您希望在App Store中接受您的應用程序,則無法使用它。

我建議您file an enhancement request with Apple要求將此方法公開。

雖然考慮一下:如果你真的很絕望,爲什麼不分析-[EKCalendar description]的輸出呢?這是非常非常糟糕的風格,它可能會在未來破裂,但你可能會通過App Store的審查;)特別是如果你只用它來分組和編寫你的代碼非常防禦,所以它不會打破,但根本不分組,如果description方法的輸出格式不同。

+0

哈克它是,你的解析E​​KCalendar描述的建議其實非常漂亮,我沒有想到我自己。類轉儲實用程序是一個很好的獎勵,謝謝!如果它不是提示@DaveDeLong讓我看看未來的iOS參考,我會投入時間。現在我只會在應用程序的其他部分工作,直到秋天。乾杯! – epologee

2

此信息在4.0 SDK中不可用。你看過即將發佈的SDK的開發人員預覽,看看它是否可能包含更多信息?

+0

我現在有了,而且它變成了一個非常好的主意。iOS 5中會出現一些東西,可以消除選擇日曆時的痛苦。謝謝你的推動!添加到我的#WWDDLD列表中:查看未來的iOS參考:) – epologee

1

而在iOS6上?看起來私人財產[EKCalendar accountName]消失了。並且[EKCalendar description]不包含帳戶了。 :

EKCalendar < 0x200f50e0> {title = [email protected]; type = Exchange; allowsMo​​dify = YES;顏色=#44A703;}

[EKCalendar source]的提供EKSource對象,即有一個標題,但這不是當我創建的帳戶餘輸入的名稱,但似乎是更通用的名稱,例如交換,其他,CalDAV。