从谷歌访问结果放置API自动完成

我正在使用这种方法来获取build议,我需要在tableview中显示它们:

- (void)placeAutocomplete:(NSString *)autoCompleteString { [self.autoCompleteSuggestionsList removeAllObjects]; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.type = kGMSPlacesAutocompleteTypeFilterCity; [_placesClient autocompleteQuery:(NSString *)autoCompleteString bounds:nil filter:filter callback:^(NSArray *results, NSError *error) { if (error != nil) { NSLog(@"Autocomplete error %@", [error localizedDescription]); return; } for (GMSAutocompletePrediction* result in results) { //NSLog(@"Result '%@' with placeID %@", result.attributedFullText.string, result.placeID); //NSRange autoCompleteRange = [result.attributedFullText.string rangeOfString:autoCompleteString]; //if (autoCompleteRange.location == 0) { //NSString *stringNow = [NSString stringWithFormat:@"%@",result.attributedFullText.string]; [self.autoCompleteSuggestionsList addObject:result.attributedFullText.string]; //NSLog(@"test : %@",stringNow); //NSLog(@"%@",self.autoCompleteSuggestionsList); //} } }]; [self.autocompleteTableView reloadData]; NSLog(@"%@",self.autoCompleteSuggestionsList); } 

但是我无法访问autocompleteQuery方法之外的结果

当logging它显示正确的内部方法,但不是外面,我使用可变数组来访问它,但我显示正确内,但不是外部。

我不需要使用任何第三方自动填充窗格的build议。 我得到的结果,我只是需要他们从方法访问,以便它可以访问显示tableview以及

你必须重新加载块内的数据。

这样做的原因很简单,因为block是在不同的线程中运行的,所以当它完成执行的时候它和主线程一起callbackblock,这就是为什么我们需要重新载入表格。

 - (void)placeAutocomplete:(NSString *)autoCompleteString { [self.autoCompleteSuggestionsList removeAllObjects]; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.type = kGMSPlacesAutocompleteTypeFilterCity; [_placesClient autocompleteQuery:(NSString *)autoCompleteString bounds:nil filter:filter callback:^(NSArray *results, NSError *error) { if (error != nil) { NSLog(@"Autocomplete error %@", [error localizedDescription]); return; } for (GMSAutocompletePrediction* result in results) { [self.autoCompleteSuggestionsList addObject:result.attributedFullText.string]; } [self.autocompleteTableView reloadData]; }]; NSLog(@"%@",self.autoCompleteSuggestionsList); }