我是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;
}
如果我的代码是这样的,我可以知道我的代码有什么问题吗?
答案 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]];