添加项目后NSMutableDictionary为空

时间:2014-07-10 13:55:05

标签: objective-c nsmutabledictionary

我已经编写了下面的代码来完成数据库查询的结果,并将每个元素放入一个由每个字母的数组组成的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]);
}

1 个答案:

答案 0 :(得分:1)

NSMutableArray *courseArray = [courseDict objectForKey:letter];

你永远不会真正构造这个数组 - courseDict只会在这里返回nil。你需要添加

if(!courseArray)
{
   courseArray = [NSMutableArray new];
}