我有一个使用GraphQL和apollo框架的应用程序,以显示带有国家/地区列表的tableView。我有一个工具栏按钮,单击该按钮时会显示警报对话框,允许用户输入国家/地区名称,以便可以将其添加到AWS上的数据库中。问题是在perform(mutation:GraphQLMutation)函数内部,我无法获取数据并重新加载tableView以立即显示更改。我仍然可以使用单独的条形按钮获取列表。
我尝试浏览文档并逐步执行程序,但似乎在perform(mutation:GraphQLMutation)函数中调用fetch函数和reload函数为时过早,因为重新加载tableView时,国家/地区计数较低比数据库中的实际国家/地区数多。例如,添加国家/地区时,countriesCount将为30,而不是31。因此,当重新加载tableView时,它将在添加新国家之前重新加载。
let action = UIAlertAction(title: "Add Country", style: .default) { (action) in
if let newCountry = textField.text {
let addCountryMutation = AddCountryMutation(name: newCountry)
self.apollo.perform(mutation: addCountryMutation) { (result, error) in
self.fetchQueryResults()
print("Country Added")
}
}
}
extension FetchCountryTableVC {
func fetchQueryResults() {
apollo.fetch(query: countriesQuery) { (result, error) in
if let countries = result?.data?.countries.count {
self.countriesCount = countries
}
self.tableView.reloadData()
}
}
}
我希望在执行突变后,fetchQueryResults()函数将运行,获取国家/地区计数并重新加载tableView,这样国家/地区列表将显示新添加的国家/地区。
实际发生的是tableView重新加载而没有显示更新的数据。