4

EKCalendarのドキュメントをご覧ください。非常にシンプルで、5つのプロパティがあり、そのうちの1つだけが。という文字列titleです。これで、iPhoneに複数のカレンダーがあり、iCalのカレンダー設定を開くと、すべてのカレンダーがと呼ばれる別の文字列によって適切にグループ化されていることがわかりますaccount

私が理解できないのは、同じことを行う方法です。インスタンスを表示するときaccountは表示されますが、アクセスすることはできないためです。NSLogEKCalendar

EKCalendar<0x1851b0>{タイトル=仕事; タイプ=CalDAV; account = some@addr.ess; permitModify = YES; 色=0.6901960.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を使用する場合は、読み取り専用のメソッドがあることがわかります-(id)accountName。ただし、ヘッダーに含まれていないため、残念ながらプライベートAPIであり、アプリをAppStoreで受け入れたい場合は使用できません。

このメソッドを公開するように要求する拡張要求をAppleに提出することをお勧めします。

考えてみても、本当に必死なら、の出力を解析してみません-[EKCalendar description]か?これは非常に非常に悪いスタイルであり、将来的には機能しなくなる可能性がありますが、App Storeのレビューで確認できる可能性があります;)特に、グループ化にのみ使用し、コードを非常に防御的に記述して、機能しなくなることはありませんが、descriptionメソッドの出力の形式が異なる場合は、単にグループ化されません。

于 2011-06-20T21:28:39.397 に答える
2

この情報は4.0SDKでは利用できません。今後のSDKの開発者向けプレビューを見て、さらに多くの情報が含まれる可能性があるかどうかを確認しましたか?

于 2011-06-20T21:38:13.547 に答える
1

そしてiOS6では?私有財産が[EKCalendar accountName]なくなったようです。そして[EKCalendar description]、もうアカウントは含まれていません。:

EKCalendar <0x200f50e0> {title = test@gmail.com; タイプ=交換; permitModify = YES; 色=#44A703;}

は、タイトルを持つオブジェクトを[EKCalendar source]提供しEKSourceますが、これはアカウントを作成したときに入力した名前ではありませんが、Exchange、Other、CalDAVなどのより一般的な名前のようです。

于 2013-03-05T09:08:40.060 に答える