apollo-ios Как кешировать данные на диске?
Мне нужно кэшировать мои данные на диске для просмотра в автономном режиме, я нашел ApolloSQLite в источнике apollo-ios, но я не могу найти никаких документов ApolloSQLite(я также пробовал поиск в Google).
Среда:
Xcode 10.1
macOS 10.14.3
CocoaPods 1.5.3
Apollo (0.9.5)
SQLite.swift (0.11.5)
Слишком много ошибок после pod install
:
pod 'Apollo'
pod 'Apollo/SQLite'
1 ответ
Когда я использую CocoaPods 1.5.3
, пропуская источник Apollo/Core
после pod install
, это вызывает ошибки. Я исправил это путем обновления CocoaPods до 1.6.0.
Кстати, оригинальный вопрос, как использовать ApolloSQLite? Потому что я не нашел никаких документов для ApolloSQLite. После слишком большого количества поиска и запросов я перечисляю свои шаги, как показано ниже для других людей за помощью:
- используйте CocoaPods для управления библиотеками:
pod 'Apollo' pod 'Apollo/SQLite'
нужен путь к файлу, чтобы сохранить файл sqlite, который используется для кэширования данных. Вставьте мои коды для ссылки:
func temporarySQLiteFileURL() -> URL { let applicationSupportPath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first! let dbPath = applicationSupportPath + "/com.[special name].cache" if !FileManager.default.fileExists(atPath: dbPath) { try? FileManager.default.createDirectory(atPath: dbPath, withIntermediateDirectories: true, attributes: nil) } let url = URL(fileURLWithPath: dbPath) return url.appendingPathComponent("db.sqlite3") }
настройте ApolloClient:
let configuration = URLSessionConfiguration.default configuration.timeoutIntervalForRequest = 10 let url = URL(string: self.graphQLApiAddress!)! let networkTransport = HTTPNetworkTransport(url: url, configuration: configuration) let cache = try? SQLiteNormalizedCache(fileURL: temporarySQLiteFileURL()) let store = ApolloStore(cache: cache ?? InMemoryNormalizedCache()) self.apolloClient = ApolloClient(networkTransport: networkTransport, store: store)