将某个键显示在某个标签栏中

时间:2013-05-09 02:45:45

标签: ios objective-c nsdictionary uitabview

我是Objective-c编程的新手,所以我不确定编码。

基本上,我有一个名为lessonDict的NSDictionary,其中包含我的所有课程模块。我的NSDictionary中的关键是课程的日子,如星期一,星期二,星期三......

我的TimetableDayViewController中有一个tabBarController。

当我点击tabBarController上的'Mon'时,它应该只显示仅适用于星期一的课程。

我可以知道如何做到这一点?

感谢。

我的XML表(时间表XML):

<Timetable>
 <Lesson Day="Thursday">
   <ModuleGroup>IT1103</ModuleGroup>
   <Time>0800-0850</Time>
   <moduleCode>IT2201</moduleCode>
   <lessonType>Lecture</lessonType>
   <location>Ltl3</location>
   <staffName>Evelyn</staffName>
 </Lesson>
 <Lesson Day="Wednesday">
   <ModuleGroup>IT1103</ModuleGroup>
   <Time>0900-0950</Time>
   <moduleCode>IT1204</moduleCode>
   <lessonType>Practical</lessonType>
   <location>L539</location>
   <staffName>Aaron</staffName>
 </Lesson>
 <Lesson Day="Wednesday">
   <ModuleGroup>IT1103</ModuleGroup>
   <Time>1010-1100</Time>
   <moduleCode>IT1204</moduleCode>
   <lessonType>Practical</lessonType>
   <location>L539</location>
   <staffName>Aaron</staffName>
 <Lesson Day="Friday">
    <ModuleGroup>IT1103</ModuleGroup>
    <Time>1110-1200</Time>
    <moduleCode>IT1210</moduleCode>
    <lessonType>Tutorial</lessonType>
    <location>L601</location>
    <staffName>Katherine</staffName>
 </Lesson>
</Timetable>

TimetableDayViewController.m

-(id)initWithDay:(NSString *)whatday
{
   NSLog (@"test %@", whatday);
    if (self = [super initWithStyle:UITableViewStylePlain])
    {
    NSLog (@"test");
    self.day = whatday;
    self.tabBarItem.title = self.day;

    NSMutableArray *mon = [[NSMutableArray alloc] init];
    NSMutableArray *tue = [[NSMutableArray alloc] init];
    NSMutableArray *wed = [[NSMutableArray alloc] init];
    NSMutableArray *thu = [[NSMutableArray alloc] init];
    NSMutableArray *fri = [[NSMutableArray alloc] init];

    for (int i=0;i<(lessonList.count); i++)
    {
        mon = [lessonDict objectForKey:@"Monday"];
        tue = [lessonDict objectForKey:@"Tuesday"];
        wed = [lessonDict objectForKey:@"Wenesday"];
        thu = [lessonDict objectForKey:@"Thursday"];
        fri = [lessonDict objectForKey:@"Friday"];
    }

    if ([whatday isEqualToString:@"Mon"])
    {
        [lessonList addObjectsFromArray:mon];
    }
    if ([whatday isEqualToString:@"Tue"])
    {
        [lessonList addObjectsFromArray:tue];
    }
    if ([whatday isEqualToString:@"Wed"])
    {
        [lessonList addObjectsFromArray:wed];
    }
    if ([whatday isEqualToString:@"Thu"])
    {
        [lessonList addObjectsFromArray:thu];
    }
    if ([whatday isEqualToString:@"Fri"])
    {
        [lessonList addObjectsFromArray:fri];
    }
}
return self;
}

如果我的代码是这样的,我可以知道我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

首先从lessonDict中提取当天的json。

[lessonDict objectForKey@"Monday"];

根据课程模块的类型,使用适当的变量。现在使用获得的数据。

答案 1 :(得分:0)

我不确定那些需要回答此问题的人是否有帮助。但我已经解决了我的问题。

我创建了另一个名为dayList的数组来存储我想要的东西。 dayList数组只存储特定日期的模块。我为dayList创建了一个属性,因此可以在TimetableDayViewController中轻松访问它。

所以在我的TimetableDayViewController.m

(在parserDidEndDocument方法中)

dayList = [[NSMutableArray alloc] init];

for (int i = 0; i < (lessonList.count); i++)
{
    timetable *t = [lessonList objectAtIndex:i];

    NSLog(@"Module Group: %@, Time: %@, Module Code: %@, Lesson Type: %@, Location: %@, Staff Name: %@, Day: %@", t.moduleGroup, t.moduleTime, t.moduleName, t.moduleType, t.moduleRoom, t.moduleLec, t.lessonDay);

        if ([t.lessonDay isEqual: self.day])
    {
        [dayList addObject:t];
    }
}

所以在cellForRowAtIndexPath上调用它,它应该能够显示你想要的内容。

timetable *t = [dayList objectAtIndex:[indexPath row]];