diff --git a/Sources/ApolloSQLite/SQLiteNormalizedCache.swift b/Sources/ApolloSQLite/SQLiteNormalizedCache.swift index 6d5a8a70b9..af5c8da8c9 100644 --- a/Sources/ApolloSQLite/SQLiteNormalizedCache.swift +++ b/Sources/ApolloSQLite/SQLiteNormalizedCache.swift @@ -140,11 +140,12 @@ extension SQLiteNormalizedCache: NormalizedCache { let result: Swift.Result<[Record?], Error> do { let records = try self.selectRecords(forKeys: keys) + let recordsIndexMap = records.indices.reduce(into: [:]) { resultMap, index in + resultMap[records[index].key] = index + } + let recordsOrNil: [Record?] = keys.map { key in - if let recordIndex = records.firstIndex(where: { $0.key == key }) { - return records[recordIndex] - } - return nil + recordsIndexMap[key].flatMap { records[$0] } } result = .success(recordsOrNil)