gpt4 book ai didi

ios - EKReminder 没有设置日历

转载 作者:行者123 更新时间:2023-11-29 12:48:46 28 4
gpt4 key购买 nike

我不明白为什么这段代码不再有效(它曾经有效)。我创建了一个 UIDatePicker,它在指定日期触发日历中的提醒。我不知道为什么我会收到“没有设置日历”的错误,因为我确实设置了它(如代码中所示)

- (void)removeViews:(id)object {
[[self.view viewWithTag:9] removeFromSuperview];
[[self.view viewWithTag:10] removeFromSuperview];
[[self.view viewWithTag:11] removeFromSuperview];
}

- (void)dismissDatePicker:(id)sender {
if (eventStore == nil)
{
eventStore = [[EKEventStore alloc]init];
EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder];
if (authorizationStatus == EKAuthorizationStatusNotDetermined) {
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if(granted){
[self createReminder];
}

}];
}
if (authorizationStatus == EKAuthorizationStatusAuthorized) {
[self createReminder];
}

}

if (eventStore != nil){

[self createReminder];
}
CGRect toolbarTargetFrame = CGRectMake(self.view.bounds.size.width/2-160, self.view.bounds.size.height/2-44-108, 320, 44);
CGRect datePickerTargetFrame = CGRectMake(self.view.bounds.size.width/2-160, self.view.bounds.size.height/2-108, 320, 216);
[UIView beginAnimations:@"MoveOut" context:nil];
[self.view viewWithTag:9].alpha = 0;
[self.view viewWithTag:10].frame = datePickerTargetFrame;
[self.view viewWithTag:11].frame = toolbarTargetFrame;
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(removeViews:)];
[UIView commitAnimations];
NSLog(@"dismiss");
}

- (IBAction)callDP:(id)sender {
if ([self.view viewWithTag:9]) {
return;
}
CGRect toolbarTargetFrame = CGRectMake(self.view.bounds.size.width/2-160, self.view.bounds.size.height/2-44-108, 320, 44);
CGRect datePickerTargetFrame = CGRectMake(self.view.bounds.size.width/2-160, self.view.bounds.size.height/2-108, 320, 216);

datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(self.view.bounds.size.width/2-160, self.view.bounds.size.height+44, 320, 216)];
datePicker.tag = 10;
[datePicker setBackgroundColor:[UIColor whiteColor]];
datePicker.alpha = 0.87;
[self.view addSubview:datePicker];

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height+44, 320, 44)];
toolBar.tag = 11;
toolBar.barStyle = UIBarStyleDefault ;
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissDatePicker:)];
[toolBar setItems:[NSArray arrayWithObjects:spacer, doneButton, nil]];
[self.view addSubview:toolBar];

[UIView beginAnimations:@"MoveIn" context:nil];
toolBar.frame = toolbarTargetFrame;
datePicker.frame = datePickerTargetFrame;
[UIView commitAnimations];
}
-(void)createReminder
{
EKReminder *reminder = [EKReminder
reminderWithEventStore:eventStore];

reminder.title = @"it's time to do your ELS exercise";

reminder.calendar = [eventStore defaultCalendarForNewReminders];

NSDate *date = [datePicker date];

EKAlarm *alarm = [EKAlarm alarmWithAbsoluteDate:date];

[reminder addAlarm:alarm];

NSError *error = nil;

[eventStore saveReminder:reminder commit:YES error:&error];

if (error){
NSLog(@"error = %@", error);
}
}

我得到错误:

Domain=EKErrorDomain Code=1 "No calendar has been set." UserInfo=0x17826b400 {NSLocalizedDescription=No calendar has been set.}

最佳答案

解决方案:事件存储从未被实例化,因为它不是零。我在 viewDidLoad 中添加:

eventStore = [[EKEventStore alloc]init];

我只在 dismissDatePicker 中保留了以下内容:

[eventStore requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error) {
[self createReminder];
}];

关于ios - EKReminder 没有设置日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946493/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com