目前,我有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
颜色,然后使用石英显示颜色的小点。我正在将其用于我目前正在实施的日历应用程序。
答案 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)