EKCalendarでcolorやcgColorなどを取得したい

投稿者: Anonymous

swiftでiOSのカレンダーアプリを作成しています。

カレンダーの一覧のデータを取得しようとしているのですが、
calendarIdentifier、title、typeは簡単に取得できたのですが、
その他のcolorやcgColor、allowsModifyなどは変数に代入できません。

let eventStore = EKEventStore()
var calendars: [EKCalendar]?
calendars = eventStore.calendarsForEntityType(.Event)
let Cal01 = iOSCalendarData()
let calendarIdentifier = calendars![0].calendarIdentifier
let title = calendars![0].title
let type = calendars![0].type

このような形で値を取得しようとしているのですが、
colorやcgColor、allowsModifyが取得できません。

ためしにEKCalendarを表示してみると、

EKCalendar <0x175271b0> {title = 睡眠; type = CalDAV; allowsModify = YES; color = #FF2968;}

このように、ColorやallowsModifyの値を見ることができます。

どのようにすれば、colorやcgColor、allowsModifyの値を取得することができるのでしょうか?
よろしくお願いします。

解決

アクセスするためのプロパティ名が違っているのではないでしょうか。
AppStoreに、Dashという各種言語のリファレンス・スニペットツールがありまして、
その中のiOSのドキュメントを見ると、Swift2.2においては、

cgColorと呼ばれているものについては、var CGColor: CGColor
allowsModifyと呼ばれているものについては、var allowsContentModifications: Bool { get }

というプロパティ名が設定されているようなので、

let color = calendars![0].CGColor
let allowsModify = calendars![0].allowsContentModifications

でアクセス出来ると思います。

Swift3に置いてはコメントでLe Pere d’OOさんが指摘くださったように、

let color = calenders![0].cgColor

でアクセス出来ると思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *