2013-12-17 67 views
0

我正在使用MBCalendarKit并使其工作,但我试图为我创建的每个事件使用信息字典,以便在日历视图中选择事件后在详细信息页面上显示详细信息。在那里我创建的事件从字典中获取不正确的信息

enter image description here

这里是:

// Read Events.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"]]; 

     // Create events 

     aCKCalendarEvent = [[CKCalendarEvent alloc] init]; 
     aCKCalendarEvent.title = titleString; 
     aCKCalendarEvent.date = [dateformatter dateFromString: date]; 
     aCKCalendarEvent.info = [dict objectForKey:@"Info"]; 

     _information = [NSString stringWithFormat:@"%@", aCKCalendarEvent.info]; 

     BOOL dateExists; 

     for (int i = 0; i < [eventsArray count]; i++) 
     { 
      if ([[(CKCalendarEvent *)[eventsArray objectAtIndex:i]date]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文件中创建
- (void)calendarView:(CKCalendarView *)CalendarView didSelectEvent:(CKCalendarEvent *)event; 
{ 
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
    [dateformatter setDateFormat:@"MM/dd/yyyy"]; 

    EventDetail *detail = [[EventDetail alloc] initWithNibName:nil bundle:nil]; 

    detail.details = _information; 
    detail.eventTitle = event.title; 
    detail.eventDate = [dateformatter stringFromDate:event.date]; 

    [self.navigationController pushViewController:detail animated:YES]; 

我的问题是,在详细视图中显示的详细信息始终是plist文件中最后一个事件的详细信息,因此无论选择哪个事件,细节总是说德克萨斯州的圣安东尼奥。

我已经改变了detail.details = _information;detail.details = [event.info objectForKey:@"Info"];然而,导致-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0xbcc2000

回答

0

我得到了它改变了一下- (void)calendarView:(CKCalendarView *)CalendarView didSelectEvent:(CKCalendarEvent *)event;方法的工作。

下面是用于选择事件的工作代码:

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
    [dateformatter setDateFormat:@"MM/dd/yyyy"]; 

    EventDetail *detail = [[EventDetail alloc] initWithNibName:nil bundle:nil]; 

    _information = [NSString stringWithFormat:@"%@", event.info]; 

    detail.details = _information; 
    detail.eventTitle = event.title; 
    detail.eventDate = [dateformatter stringFromDate:event.date]; 

    [self.navigationController pushViewController:detail animated:YES];