我已经编写了下面的代码来完成数据库查询的结果,并将每个元素放入一个由每个字母的数组组成的Dictionary中。 因此,以相同字母开头的查询的每个结果都应放入字典中的自己的数组中,并将字母作为键。 但是在执行结束时,字典是空的。
NSMutableDictionary *courseDict;
- (void)viewDidLoad
{
...
courseDict = [[NSMutableDictionary alloc] init];
...
[self getCoursesFromDB];
...
}
- (void)getCoursesFromDB
{
FMResultSet *s;
s = [db executeQuery:@"SELECT * FROM course WHERE CourseType =?;", _coursetype];
if ([db hadError]) {
NSLog(@"DB Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
}
while ([s next]) {
KCCourse *course = [KCCourse new];
NSString *title = [s stringForColumnIndex:1];
...
course.name = title;
...
NSString *letter = [title substringToIndex:1];
NSMutableArray *courseArray = [courseDict objectForKey:letter];
[courseArray addObject:course];
[courseDict setValue:courseArray forKey:letter];
}
NSLog(@"%@", [courseDict description]);
}
答案 0 :(得分:1)
NSMutableArray *courseArray = [courseDict objectForKey:letter];
你永远不会真正构造这个数组 - courseDict只会在这里返回nil。你需要添加
if(!courseArray)
{
courseArray = [NSMutableArray new];
}