如何在perform(mutation:GraphQLMutation)函数内重新加载tableView数据?

时间:2019-03-25 05:24:38

标签: ios swift graphql apollo

我有一个使用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重新加载而没有显示更新的数据。

0 个答案:

没有答案