Я использую Apollo iOS для получения запросов GraphQL. Я хочу переместить закрытие запроса apollo.fetch()
в отдельную функцию в классе. Этот класс будет содержать статическую ссылку на клиент apollo, а также функции для выполнения мутаций и запросов GraphQL.
Я пытаюсь сделать следующее:
static func fetchQueryResults() -> CountriesQuery.Data.Country?{
var myResult: CountriesQuery.Data.Country?
myResult = nil
apollo.fetch(query: countriesQuery) { (result, error) in
print(result?.data)
myResult = result?.data //this line causes error
}
return myResult
}
Всякий раз, когда я добавляю строку myResult = result?.data
, я получаю ошибку Общий параметр 'Запрос' не может быть выведен.
Однако, когда строка закомментирована, она работает нормально, но, очевидно, функция не имеет смысла. В конце концов я хотел бы обобщить эту функцию, чтобы я мог передать в нее запрос, но как мне получить данные из этого базового замыкания?
По сути, вопрос в том, как мне "обернуть" замыкание в функции?
Смысл этой функции в том, чтобы иметь возможность получить количество строк для раздела табличного представления в функции:
override func tableView(_ tableView:UITableView, numberOfRowsInSection section: Int -> Int{
return fetchQueryResults.count
}
Однако представление загружается до запуска этой функции. Я думаю, это потому, что apollo.fetch()
работает асинхронно?