1. 程式人生 > >關於iOS 插入日曆功能以報錯Error Domain=EKErrorDomain Code=1 "尚未設定日曆。" UserInfo={NSLocalizedDescription=尚未設定日曆。}

關於iOS 插入日曆功能以報錯Error Domain=EKErrorDomain Code=1 "尚未設定日曆。" UserInfo={NSLocalizedDescription=尚未設定日曆。}

處理報錯

Error Domain=EKErrorDomain Code=1 "尚未設定日曆。" UserInfo={NSLocalizedDescription=尚未設定日曆。}

出現這個錯誤的原因是由於你在為事件設定日曆時,設定了nil,如下:

[event setCalendar:[self.eventStoredefaultCalendarForNewEvents]];

也就是 [self.eventStoredefaultCalendarForNewEvents] 為nil。

出現這個問題的原因並不是程式碼出現了問題,暫時我也沒有辦法從程式碼上解決這個問題,因為現在使用者自己都無法在日曆中插入事件,解決辦法如下圖


自定義日曆

如果你想新增屬於自己App的日曆的話,可以這樣

- (EKCalendar *)getCalendar{

    EKCalendar *calendar = nil;

    BOOL needAdd = YES;

for (EKCalendar *ekcalendarin [_eventStorecalendarsForEntityType:EKEntityTypeEvent]) {

        if ([ekcalendar.titleisEqualToString:@"My calendar"]) {

            needAdd = NO

;

            calendar = ekcalendar;

            break;

        }

    }

    if (needAdd) {

        EKSource *localSource = nil;

        for (EKSource *sourcein_eventStore.sources)

        {

//iCloud 是否存在

            if (source.sourceType ==EKSourceTypeCalDAV && [source.titleisEqualToString

:@"iCloud"])

            {

                localSource = source;

                break;

            }

        }

        if (localSource == nil)

        {

            //本地 是否存在

            for (EKSource *sourcein_eventStore.sources) {

                if (source.sourceType ==EKSourceTypeLocal)

                {

                    localSource = source;

                    break;

                }

            }

        }

        if (localSource) {

            calendar = [EKCalendarcalendarForEntityType:EKEntityTypeEventeventStore:_eventStore];

            calendar.source = localSource;

            calendar.title = APPSetting.kApp_Name;//自定義日曆標題

            calendar.CGColor = [UIColoryellowColor].CGColor;//自定義日曆顏色

            NSError* error;

            [_eventStore saveCalendar:calendar commit:YESerror:&error];

        }

    }

    return calendar;

}

將這個方法生成的日曆設定為事件的日曆

[event setCalendar:[self  getCalendar]];

效果如下


iOS 日曆插入事件基本功能

請參照

http://www.jianshu.com/p/2642b0e3cac5

這邊就不予以贅述了