【问题标题】:IOS/xcode/coredata: Implement calendar control using core dataIOS/xcode/coredata:使用核心数据实现日历控制
【发布时间】:2015-04-29 14:48:04
【问题描述】:

IOS 新手在这里尝试在我的项目中实现一个开源日历控件 MADay,并将数据存储在核心数据中。日历控件不提供用于访问核心数据的文档。

我猜我需要在从与下面的“事件”数组对应的核心数据中提取事件后创建一个 NSArray。这就是全部?如果是这样,我该怎么做?

感谢您的任何建议。

这是来自库的数据源代码:

- (NSDate *)nextDayForDate:(NSDate *)date;
- (NSArray *)eventKitEventsForDate:(NSDate *)date;
- (NSArray *)eventKitEventsToMAEvents:(NSArray *)eventKitEvents;

@property (readonly) EKEventStore *eventStore;

@end

@implementation MAEventKitDataSource


- (NSArray *)dayView:(MADayView *)dayView eventsForDate:(NSDate *)date
{
    return [self eventKitEventsToMAEvents:[self eventKitEventsForDate:date]];
}

- (NSArray *)weekView:(MAWeekView *)weekView eventsForDate:(NSDate *)date
{
    return [self eventKitEventsToMAEvents:[self eventKitEventsForDate:date]];
}


- (EKEventStore *)eventStore
{
    if (!_eventStore) {
        _eventStore = [[EKEventStore alloc] init];
    }
    return _eventStore;
}


- (NSDate *)nextDayForDate:(NSDate *)date
{
    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setDay:1];

    return [CURRENT_CALENDAR dateByAddingComponents:components toDate:date options:0];
}

- (NSArray *)eventKitEventsForDate:(NSDate *)startDate
{
    NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
                                                                      endDate:[self nextDayForDate:startDate]
                                                                    calendars:nil];

    NSArray *events = [self.eventStore eventsMatchingPredicate:predicate];
    return events;
}

- (NSArray *)eventKitEventsToMAEvents:(NSArray *)eventKitEvents
{
    NSMutableArray *events = [[NSMutableArray alloc] init];
    for (EKEvent *event in eventKitEvents) {
        MAEvent *maEvent = [[MAEvent alloc] init];
        maEvent.title  = event.title;
        maEvent.start  = event.startDate;
        maEvent.end    = event.endDate;
        maEvent.allDay = event.allDay;

        maEvent.backgroundColor = [UIColor colorWithCGColor:event.calendar.CGColor];
        maEvent.textColor       = [UIColor whiteColor];

        [events addObject:maEvent];
    }
    return events;
}

【问题讨论】:

    标签: ios core-data calendar controls eventkit


    【解决方案1】:

    我自己没有使用过这个框架,但据我从代码和EventKit 文档中可以看出,它有自己的存储,因此不需要进一步的核心数据处理。

    https://developer.apple.com/library/prerelease/ios/documentation/EventKit/Reference/EKEventStoreClassRef/index.html#//apple_ref/occ/instm/EKEventStore/saveCalendar:commit:error:

    所以:阅读文档以了解;)

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多