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
に含まれていますが、そこにあります。NSLog を使用してコンソールで確認すると、常に表示されます...奇妙ですが、次回は値が表示され、新しいキーの値に問題があります。たとえば、最初にforを追加すると、コンソールで (null) が返され、2 周目に for を追加します。そして今、それは72 を返しますが、今のところ (null) を返します。問題は何ですか?辞書のどこが間違っていますか?university.groups
(null)
(null) (null) (null)
averageMark = 72
first key
averageMark
second key
first key
second key
EDIT NSMutableDictionary にキーが存在するかどうかを確認しようとしました。ありません。
mGroups[group] = @(averageMark);
university.groups = mGroups;
if (mGroups[group])
NSLog(@"1234");
NSLog(@"%@ %@ %@", university.groups[group], mGroups[group], @(averageMark));
コンソールでは、常に次のように表示されます。