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. После слишком большого количества поиска и запросов я перечисляю свои шаги, как показано ниже для других людей за помощью:

  1. используйте CocoaPods для управления библиотеками:
pod 'Apollo'
pod 'Apollo/SQLite'
  1. нужен путь к файлу, чтобы сохранить файл 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")
    }
    
  2. настройте 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)
    
Другие вопросы по тегам