apollo-ios Как кешировать данные на диске? - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно кэшировать мои данные на диске для просмотра в автономном режиме, я нашел 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'

enter image description here

1 Ответ

0 голосов
/ 18 февраля 2019

Когда я использую CocoaPods 1.5.3, пропуская источник Apollo/Core после pod install, это вызывает ошибки.Я исправил это путем обновления CocoaPods до 1.6.0.

Кстати, первоначальный вопрос - как использовать ApolloSQLite? Поскольку я не нашел никаких документов для ApolloSQLite.После слишком большого количества поиска и запросов я перечисляю свои шаги, как показано ниже для помощи другим людям:

  1. используйте 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)
...