0

我正在尝试按照本教程进行操作,但在开始时出现错误if (err = noErr) {

这是我的代码:

#import "CalendarViewController.h"
#import <EventKit/EventKit.h>

@interface CalendarViewController ()

@end

@implementation CalendarViewController

-(IBAction) createEvent {

EKEventStore *eventStore = [[EKEventStore alloc ] init];

EKEvent *event = [EKEvent eventWithEventStore:eventStore];

NSDate *startDate = [[NSDate alloc] init];
NSDate *endDate = [[NSDate alloc] init];

event.title = @"Title for new event";
event.startDate = startDate;
event.endDate = endDate;
event.allDay = YES;

[event setCalendar: [eventStore defaultCalendarForNewEvents]];

NSError *err;


[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
if (err == noErr) {

    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Event Created"
                          message:@"How about that?"
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];

        [alert show];
        [alert release];
}

[startDate release];
[endDate release];
[eventStore release];
}

我是这方面的初学者,它是我的 HSC 的一部分,但我没有让它正常工作。我真的很感激任何帮助。

4

1 回答 1

1

当前接受的答案有点误导。

当 Cocoa 中有返回 aBOOL并包含对 NSError 对象的间接引用的方法时,必须在检查错误对象之前检查返回值——因为只有当返回值是时NO,错误对象才能保证有效。

NSError *err;

BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
if (success) {

    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Event Created"
                          message:@"How about that?"
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];

        [alert show];
        [alert release];
} else {
    if (!err) {
        // If the event is not modified then the return is `NO` and there is no error
        UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Event Unchanged"
                          message:@"The event wasn't modified, so there is nothing to save."
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];

        [alert show];
        [alert release];
    } else {
        // The method was unsuccessful and there is a valid error
        NSString *errorMessage = [NSString stringWithFormat:@" Unable to save because: %@", [err localizedDescription];
        UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Error!"
                          message:errorMessage"
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];

        [alert show];
        [alert release];
    }
}

比我实际做的方式有点啰嗦,但你应该明白

于 2013-08-24T13:41:11.523 回答