首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MBCalendarKit发出创建事件

使用MBCalendarKit发出创建事件
EN

Stack Overflow用户
提问于 2013-12-17 13:03:02
回答 1查看 918关注 0票数 2

我在我的应用程序中使用MBCalendarKit,我可以创建这样的事件:

代码语言:javascript
复制
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]];

我可以在同一天创建另一个事件,如:

代码语言:javascript
复制
[_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]];

然后我可以在另一个不同的日子里创建另一个事件:

代码语言:javascript
复制
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文件来创建所有这些事件。我可以这样做:

代码语言:javascript
复制
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中,但是我在if ([[eventsArray objectAtIndex:i]isEqualToDate:aCKCalendarEvent.date])上得到了-[CKCalendarEvent isEqualToDate:]: unrecognized selector sent to instance 0xc6bb880

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 13:11:56

您正在比较事件和日期。参见下面的代码,它比较事件日期。

代码语言:javascript
复制
if ([[(CKCalendarEvent *)[eventsArray objectAtIndex:i] date]isEqualToDate:aCKCalendarEvent.date])
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20634933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档