EKEventStore * _eventStore = [[EKEventStore alloc] init];[_eventStore requestAccesstoEntityType:EKEntityTypeReminder completion:^(BOol granted,NSError *error) { //create a new calendar for reminders. EKCalendar *calendar = [EKCalendar calendarForEntityType:EKEntityTypeReminder eventStore:_eventStore]; EKSource *localSource = nil; for (EKSource *source in _eventStore.sources) if (source.sourceType == EKSourceTypeLocal) { localSource = source; break; } calendar.source = localSource; self.calendarIDentifIEr = calendar.calendarIDentifIEr; EKReminder *reminder = [EKReminder reminderWithEventStore:_eventStore]; reminder.calendar = calendar; reminder.Title = @"Test Reminder"; reminder.startDateComponents = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]]; reminder.completionDate = [NSDate dateWithTimeIntervalSinceNow:100]; EKAlarm *alarm = [EKAlarm alarmWithabsoluteDate:[NSDate dateWithTimeIntervalSinceNow:100]]; reminder.alarms = @[alarm]; NSError *errorOb = nil; BOol saved = [_eventStore saveReminder:reminder commit:YES error:&errorOb]; if (saved) NSLog(@"Saved Reminder"); else NSLog(@"Failed to save reminder");}];
然后,我试图验证提醒实际上已被保存.我通过使用此代码来做到这一点:
nspredicate *predicate = [_eventStore predicateForRemindersInCalendars:nil];[_eventStore fetchRemindersMatchingPredicate:predicate completion:^(NSArray *reminders) { for (EKReminder *reminder in reminders) { NSLog(@"Reminder Title: %@",reminder.Title); }}];
我的新提醒永远不会出现!
谁能告诉我我在做错了什么?
解决方法 您只需要调用-requestAccesstoEntityType:completion:如果授权状态是EKAuthorizationStatusNotDetermined.您可以使用[EKEventStore authorizationStatusForEntityType:]检查授权状态.然后,只有在第一次调用-requestAccesstoEntityType:completion时才会调用完成块.在模拟器上它甚至不会被调用一次,因为在模拟器上你的应用程序已经可以访问.
EKEventStore * _eventStore = [[EKEventStore alloc] init];EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder];if (authorizationStatus == EKAuthorizationStatusNotDetermined) { [_eventStore requestAccesstoEntityType:EKEntityTypeReminder completion:^(BOol granted,NSError *error) { if (granted) { [self createNewReminder]; } else { [self showNowAccessAlert]; } }];} else { if (authorizationStatus == EKAuthorizationStatusAuthorized) { [self createNewReminder]; } else { [self showNowAccessAlert]; }}总结
以上是内存溢出为你收集整理的无法在iOS 6中保存EKReminder全部内容,希望文章能够帮你解决无法在iOS 6中保存EKReminder所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)