1

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 = 72first keyaverageMarksecond keyfirst keysecond key

EDIT NSMutableDictionary にキーが存在するかどうかを確認しようとしました。ありません。

        mGroups[group] = @(averageMark);
        university.groups = mGroups;
        if (mGroups[group])
            NSLog(@"1234");
        NSLog(@"%@ %@ %@", university.groups[group], mGroups[group], @(averageMark));

コンソールでは、常に次のように表示されます。

ここに画像の説明を入力

4

0 に答える 0