获取EkEvent的日历颜色参考

时间:2013-08-25 20:01:26

标签: iphone ios objective-c ekevent

目前,我有EkEvent

EKEvent <0xb12dc30> {EKEvent <0xb12dc30> {title = Mitchell Smith’s Birthday; location = (null); calendar = EKCalendar <0x9a532c0> {title = Birthdays; type = Birthday; allowsModify = NO; color = #8295AF;}; alarms = (null); URL = (null); lastModified = (null); timeZone = (null)}; location = (null); startDate = 2013-08-13 07:00:00 +0000; endDate = 2013-08-14 06:59:59 +0000; allDay = 1; floating = 1; recurrence = EKRecurrenceRule <0xb2199e0> RRULE FREQ=YEARLY;INTERVAL=1; attendees = (null)}

我成功解析EKCalendar密钥:

NSLog(@"%@", [event valueForKey:@"calendar"]);

打印:
EKCalendar <0x9a532c0> {title = Birthdays; type = Birthday; allowsModify = NO; color = #8295AF;}

然后我尝试让EKCalendar的Color属性执行此操作:

NSLog(@"%@", [[event valueForKey:@"calendar"] valueForKeyPath:@"color"]);

打印哪些:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<EKCalendar 0x9a532c0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key color.'

我能够获得EKCalendar的其他属性,但是当我访问color属性时,我每次都会崩溃:(。所以this class is not key value coding-compliant for the key color是我需要的明白,任何人都对如何获得这个价值有任何想法?

我的主要目标是获取颜色属性,转换&#34; hex&#34;数字为RBG颜色,然后使用石英显示颜色的小点。我正在将其用于我目前正在实施的日历应用程序。

3 个答案:

答案 0 :(得分:5)

EKCalendar上有一个CGColor公共属性。你应该使用这个。 Apple可以改变他们的描述方法在蚂蚁时间打印的方式,打破你的代码。

 UIColor *calendarColor = [UIColor colorWithCGColor:calendar.CGColor];

答案 1 :(得分:3)

根据EKCalendar的文档,您无法访问color属性,但您可以访问CGColor属性。

@property(nonatomic) CGColorRef CGColor

答案 2 :(得分:0)

Swift版 atomkirk 回答。我刚刚在2018年5月使用它,它正在工作。

来自事件参考:

let eventCalendarColor = UIColor.init(cgColor: event.calendar.cgColor)

来自日历参考:

let calendarColor = UIColor.init(cgColor: calendar.cgColor)