2013-12-17 31 views
2

我使用MBCalendarKit在我的應用程序,我能創造這樣的事件:問題創建活動使用MBCalendarKit

CKCalendarEvent* aCKCalendarEvent = [[CKCalendarEvent alloc] init]; 
    [_infoDict setObject:@"Joint Meetings with KY State Horticulture Society, KY Vegetable Growers Association, KY Vineyard Society, and KY Farmer Market Association \nEmbassy Suites\nLexington, KY" forKey:@"Jan Joint"]; 
    aCKCalendarEvent.date = [dateformatter dateFromString: @"01/06/2014"]; 
    aCKCalendarEvent.title = @"Joint Meetings"; 
    aCKCalendarEvent.info = [_infoDict objectForKey:@"Jan Joint"]; 
    [eventsArray addObject: aCKCalendarEvent]; 
    [_eventsDict setObject: eventsArray forKey: [NSDate dateWithDay:06 month:01 year:2014]]; 

我可以創建這樣在同一天的另一事件:

[_infoDict setObject:@"Washington, D.C." forKey:@"Congress Convenes"]; 
    aCKCalendarEvent = [[CKCalendarEvent alloc] init]; 
    aCKCalendarEvent.date = [dateformatter dateFromString: @"01/06/2014"]; 
    aCKCalendarEvent.title = @"113th Congress Convenes"; 
    [eventsArray addObject: aCKCalendarEvent]; 
    [_eventsDict setObject: eventsArray forKey: [NSDate dateWithDay:06 month:01 year:2014]]; 

eventsArray = [[NSMutableArray alloc] init]; 
    [_infoDict setObject:@"Hilton Hotel \nMemphis, TN" forKey:@"Forage & Grassland"]; 
    aCKCalendarEvent = [[CKCalendarEvent alloc] init]; 
    aCKCalendarEvent.date = [dateformatter dateFromString: @"01/12/2014"]; 
    aCKCalendarEvent.title = @"American Forage & Grassland Council Annual Conference"; 
    [eventsArray addObject: aCKCalendarEvent]; 
    [_eventsDict setObject: eventsArray forKey: [NSDate dateWithDay:12 month:01 year:2014]]; 

我通過一個plist文件,其合作努力循環:然後我可以在不同的日子裏,創建另一個事件獲得所有事件以創建所有事件。我可以這樣做:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Events" ofType:@"plist"]; 
    NSDictionary *dictPri = [[NSMutableDictionary alloc]initWithContentsOfFile:path]; 
    NSMutableArray *arrEvents = [[NSMutableArray alloc] initWithArray:[dictPri objectForKey:@"List"]]; 

    // Loop through each item in List array of Events.plist 

    for (NSDictionary *dict in arrEvents) 
    { 
     NSString *titleString = nil; 
     NSString *date = nil; 
     titleString = [NSString stringWithFormat:@"%@",[dict objectForKey:@"Title"]]; 
     date = [NSString stringWithFormat:@"%@",[dict objectForKey:@"Date"]]; 
     // NSDate *dateVariable = [dateformatter dateFromString:date]; 

     // Create events 

     eventsArray = [[NSMutableArray alloc] init]; 
     aCKCalendarEvent = [[CKCalendarEvent alloc] init]; 
     aCKCalendarEvent.title = titleString; 
     aCKCalendarEvent.date = [dateformatter dateFromString: date]; 
     [eventsArray addObject: aCKCalendarEvent]; 
     [_eventsDict setObject:eventsArray forKey:aCKCalendarEvent.date]; 
    } 

問題是,如果我在同一天有多個事件,只有最新的一個出現。我可以取出eventsArray = [[NSMutableArray alloc] init];這一行,但是新事件不僅會在正確的日期與其他事件一起出現,而且會在其他日子顯示。所以,我想我可以在這樣的事情拋來檢查,如果我需要一個線,然後將事件添加到eventsDict但我得到-[CKCalendarEvent isEqualToDate:]: unrecognized selector sent to instance 0xc6bb880if ([[eventsArray objectAtIndex:i]isEqualToDate:aCKCalendarEvent.date])

BOOL dateExists; 

     for (int i = 0; i < [eventsArray count]; i++) 
     { 
      if ([[eventsArray objectAtIndex:i]isEqualToDate:aCKCalendarEvent.date]) 
      { 
       // Array already contains object with this date 

       dateExists = YES; 
      } 
      else 
      { 
       dateExists = NO; 
      } 

      NSLog(@"%c", dateExists); 
     } 

     if (dateExists == YES) 
     { 
      [eventsArray addObject:aCKCalendarEvent]; 
      [_eventsDict setObject:eventsArray forKey:aCKCalendarEvent.date]; 
     } 
     else 
     { 
      eventsArray = [[NSMutableArray alloc]init]; 
      [eventsArray addObject:aCKCalendarEvent]; 
      [_eventsDict setObject:eventsArray forKey:aCKCalendarEvent.date]; 
     } 

所以基本上,我通過需要一種方式來循環plist,並確定程序何時需要在每個新事件上啓動eventsArray。

回答

4

您正在比較事件和日期。請參閱下面比較事件日期的代碼。

if ([[(CKCalendarEvent *)[eventsArray objectAtIndex:i] date]isEqualToDate:aCKCalendarEvent.date]) 
+0

謝謝!這解決了無法識別的選擇器問題。 – raginggoat