我正在创建一个创建新日历的应用,然后使用该日历添加事件等。 我可以很好地创建日历,但我正在尝试检查日历是否存在,所以,不要每次都创建第二个具有相同名称的日历。换句话说,只创建新日历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];
}
}
答案 0 :(得分:1)
我想在你的代码的这一部分:
if ([title isEqualToString:@"AFTP"] ) {
calendarExists = 1;
}else{
calendarExists = 0;
}
在将变量设置为1后需要中断,否则循环的下一轮将再次将其设置为0:
if ([title isEqualToString:@"AFTP"] ) {
calendarExists = 1;
break;
}