2012-10-21 78 views
0

我正在製作一個應用程序,用於創建新日曆,然後使用該日曆添加事件等。 我可以創建日曆很好,但我試圖運行檢查以查看是否日曆存在,所以,不要每次都創建一個同名的第二個日曆。換句話說,只能創建新的日曆ONCE。isEqualToString無法正常工作

我設置了一個int變量並運行一個循環來檢查設備上每個日曆的title屬性,但是int變量永遠不會被更改,即使我正在搜索匹配的日曆名稱的字符串。

下面是我對「檢查日曆」代碼:

-(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" 代替1 calendarExists INT)

-(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

我想在你的代碼的這一部分:

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

當您將變量設置爲1時需要中斷,否則循環的下一個回合將重新設置爲0:

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

感謝darren,那肯定是問題所在。非常感謝。 – jhilgert00