2014-07-10 35 views
0

我有下面的代码,我写了这些代码来查看数据库查询的结果,并将每个元素放入由每个字母组成的字典中。 因此,查询中以相同字母开头的每个结果都应该放入字典中的自己的数组中,并将字母作为关键字。 但是在执行结束时,字典是空的。NSMutableDictionary在添加项目后为空

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

将[courseDict objectForKey:letter]更改为[[courseDict objectForKey:letter] mutablecopy]; – Yogendra

回答

1
NSMutableArray *courseArray = [courseDict objectForKey:letter]; 

你从来没有真正构建该阵列 - courseDict只会返回nil这里。您需要添加

if(!courseArray) 
{ 
    courseArray = [NSMutableArray new]; 
} 
相关问题