關於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
{
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
這邊就不予以贅述了