我有下一个获取 SQLite 的代码:
if (sqlite3_prepare_v2(database, query, -1, &statement, NULL) == SQLITE_OK) {
while(sqlite3_step(statement) == SQLITE_ROW) {
NSInteger groupID = sqlite3_column_int(statement, 1);
NSInteger universityID = sqlite3_column_int(statement, 2);
NSInteger averageMark = sqlite3_column_int(statement, 4);
Group *group = [self objectFromArray:self.groups withID:groupID];
University *university = [self objectFromArray:self.universities withID:universityID];
NSMutableDictionary *mGroups = university.groups.mutableCopy;
mGroups[group] = @(averageMark);
university.groups = [NSDictionary new];
university.groups = mGroups;
NSLog(@"%@", university.groups[group]);
}
}
我的最后一个键有问题。所以在我所有university
的university.groups
最后一个键返回(null)
值中,但它就在那里。我使用 NSLog 在控制台中查看,我总是看到(null) (null) (null)
......这很奇怪,但在下一次出现值并且新键中的值出现问题。例如,在第一次添加averageMark = 72
forfirst key
时,在控制台中返回(null),在第二圈添加averageMark
for second key
。现在一切都好first key
,它返回 72,但second key
现在返回 (null)。什么是问题?我的字典哪里错了?
编辑 我尝试检查 NSMutableDictionary 中是否存在密钥。没有。
mGroups[group] = @(averageMark);
university.groups = mGroups;
if (mGroups[group])
NSLog(@"1234");
NSLog(@"%@ %@ %@", university.groups[group], mGroups[group], @(averageMark));
在控制台中,我总是看到下一个: