Ios Google Places未加载到TableView
我有一个UIViewController,它将另一个UIViewController显示为UISearchResultsController 我想这个searchResultsController在搜索时显示GooglePlaces 我正在控制台中打印所有自动完成预测,但是,UITableView没有加载数据 这是我的职责Ios Google Places未加载到TableView,ios,swift,uitableview,google-places-api,googleplacesautocomplete,Ios,Swift,Uitableview,Google Places Api,Googleplacesautocomplete,我有一个UIViewController,它将另一个UIViewController显示为UISearchResultsController 我想这个searchResultsController在搜索时显示GooglePlaces 我正在控制台中打印所有自动完成预测,但是,UITableView没有加载数据 这是我的职责 func updateSearchResults(for searchController: UISearchController) { searchCont
func updateSearchResults(for searchController: UISearchController) {
searchController.searchResultsUpdater = self
if searchController.isActive {
searchController.searchResultsController?.view.isHidden = false
}
if searchController.searchBar.text == "" {
self.searchResults.removeAll()
} else {
guard let query = searchController.searchBar.text else { return }
GMSPlacesClient.shared().autocompleteQuery(query, bounds: nil, filter: filteredResults) { (predictions, error) in
if error != nil {
print(error as Any)
return
} else {
guard let searchPredictions = predictions else { return }
self.searchResults = searchPredictions
print("PREDICTION: \(searchPredictions)")
DispatchQueue.main.async {
self.resultsTableView.reloadData()
}
}
}
}
}
let results = searchResults[indexPath.row].placeID
卫生检查
GMSAutocompletePrediction 0x6000037f0450: "England Street, Charlotte, NC, USA", id: EiJFbmdsYW5kIFN0cmVldCwgQ2hhcmxvdHRlLCBOQywgVVNB, types: (
route,
geocode
4是给我正确数量的预测
我在这里跟踪谷歌的定制实现
在“以编程方式获取位置预测”下
如往常一样,任何帮助都是值得感激的
更新:TableView方法
更新:cellForRowAt
在进一步检查我的cellForRowAt功能后
func updateSearchResults(for searchController: UISearchController) {
searchController.searchResultsUpdater = self
if searchController.isActive {
searchController.searchResultsController?.view.isHidden = false
}
if searchController.searchBar.text == "" {
self.searchResults.removeAll()
} else {
guard let query = searchController.searchBar.text else { return }
GMSPlacesClient.shared().autocompleteQuery(query, bounds: nil, filter: filteredResults) { (predictions, error) in
if error != nil {
print(error as Any)
return
} else {
guard let searchPredictions = predictions else { return }
self.searchResults = searchPredictions
print("PREDICTION: \(searchPredictions)")
DispatchQueue.main.async {
self.resultsTableView.reloadData()
}
}
}
}
}
let results = searchResults[indexPath.row].placeID
将结果
打印到控制台不会给我任何输出
更新:
在self处添加断点结果。searchResults=searchPredictions
更新:
在控制台中,我得到以下错误
[BoringSSL] nw_protocol_boringssl_get_output_frames(1300) [C3.1:2][0x7ffd627057e0] get output frames failed, state 8196
不确定这是否与我的问题有关,但仍要注意。是否可以替换以下内容:
DispatchQueue.main.async {
self.resultsTableView.reloadData()
}
到
是
self
和UISearchController
或UISearchResultsController
的实例?self是UISearchController的searchResultsController,其中我将数据源和委托设置为self,这是针对UITableView的。为了清晰起见,我将更新。请尝试记录self.searchResults
。你在这里的引用似乎是罪魁祸首。我的self.searchResults在这里是搜索结果:[gmsautocomplete 0x6000015c1290:“英国伦敦英格兰巷”,id:EhpFbmdsYW5kJ3MgTGFuZSwgTG9uZG9uLCBVSw,类型:(路线,geocode@V_rohit我已经更新了我的问题以在断点上显示结果。self.searchResults似乎确实是问题所在。它不是空的,但NumberRorItemsInSection从未更新过?这给了我;类型为“UIViewController”的值没有成员“resultsTableView”,在哪个类中是updateSearchResults
方法implemented?其类内搜索结果控制器:UIViewController、UISearchControllerDelegate、UISearchResultsUpdating根据您发布的代码和解释,我假设您希望在另一个视图控制器中显示数据(UISearchResultsController
)而不是在当前执行搜索的UISearchController
中。对吗?正确。我正在uisearchResultsController中显示它