0

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

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

我的 TimetableDayViewController 中有一个 tabBarController。

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

我可以知道怎么做吗?

谢谢。

我的 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>

时间表DayViewController.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;
}

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

4

2 回答 2

0

首先从lessonDict.

[lessonDict objectForKey@"Monday"];

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

于 2013-05-09T02:47:50.097 回答
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]];
于 2013-05-17T00:52:32.070 回答