isEqualToString无法正常工作

时间:2012-10-21 17:09:00

标签: objective-c ios cocoa-touch calendar

我正在创建一个创建新日历的应用,然后使用该日历添加事件等。 我可以很好地创建日历,但我正在尝试检查日历是否存在,所以,不要每次都创建第二个具有相同名称的日历。换句话说,只创建新日历ONCE。

我正在设置一个int变量并运行一个循环来检查设备上每个日历的title属性,但int变量永远不会被更改,即使我正在搜索的日历名称的字符串匹配。 / p>

以下是“检查日历”代码的内容:

-(void)checkForCalendar {

    EKEventStore *eventStore = [[EKEventStore alloc] init];
    NSArray *calendarArray = [eventStore calendarsForEntityType:EKEntityTypeEvent];
    //NSLog(@"%@", calendarArray);

    for (int x = 0; x < [calendarArray count]; x++) {

        EKCalendar *cal = [calendarArray objectAtIndex:x];
        NSString *title = [cal title];
        if ([title isEqualToString:@"AFTP"] ) {
            calendarExists = 1;
        }else{
            calendarExists = 0;
        }
    }

[self createCalendar];

}

这就是我对“创建”日历部分所拥有的:(工作正常,我总是得到一个“0”而不是calendarExists int的1。)

-(void)createCalendar {

    NSLog(@"%d",calendarExists);
    if (calendarExists == 0) {
        EKEventStore* eventStore = [[EKEventStore alloc] init];

        NSString* calendarName = @"AFTP";
        EKCalendar* calendar;

        // Get the calendar source
        EKSource* localSource;
        for (EKSource* source in eventStore.sources) {
            if (source.sourceType == EKSourceTypeCalDAV)
            {
                localSource = source;
                break;
            }
        }

        if (!localSource)
            return;

        calendar = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:eventStore];
        calendar.source = localSource;
        calendar.title = calendarName;

        [eventStore saveCalendar:calendar commit:YES error:nil];
    }
}

1 个答案:

答案 0 :(得分:1)

我想在你的代码的这一部分:

    if ([title isEqualToString:@"AFTP"] ) {
        calendarExists = 1;
    }else{
        calendarExists = 0;
    }

在将变量设置为1后需要中断,否则循环的下一轮将再次将其设置为0:

    if ([title isEqualToString:@"AFTP"] ) {
        calendarExists = 1;
        break;
    }