2016-05-05 14 views
10

Używam metody Google PlaceAutoComplete, aby uzyskać sugestie dotyczące dodania wprowadzonego w polu tekstowym.Funkcja autouzupełniania Google Zawieszanie po wywołaniu

func placeAutocomplete(text:String) { 
      let placesClient = GMSPlacesClient() 
      let filter = GMSAutocompleteFilter() 
      filter.type = .Address 

    placesClient.autocompleteQuery("New Delhi", bounds: nil, filter: nil) { (results, error) in 
     guard error == nil else { 
      print("Autocomplete error \(error)") 
      return 
     } 

     self.addressArray.removeAll() 
     for result in results! { 


      self.addressArray.append(result.attributedFullText.string) 
      print("Result \(result.attributedFullText.string) with placeID \(result.placeID)") 
     } 

    } 

} 

Kiedy nazywam tę metodę. To się zawiesza, powiedzmy Błąd podążania.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary boolValue]: unrecognized selector sent to instance 0x7fe338f01e40' 

Próbowałem znaleźć za pomocą wyjątku breakpoint, ale nie działa. Czy ktoś może mieć pomysł, gdzie się mylę?

+0

Po zmodyfikowaniu kodu do aktualnie sugerowanego przez Google (https://developers.google.com/places/ios-api/autocomplete#call_gmsplacesclient) czy nadal się zawiesza? Proszę wypróbować dokładnie ten sam kod bez dodawania czegokolwiek do addressArray i z błędem: NSError ?. Gdy spróbujesz, daj mi znać, jeśli to się nie uda. –

+0

tak. ulega awarii nawet przy użyciu kodu google do autouzupełniania –

Odpowiedz

1

Rozwiązałem problem, poprawiając w pliku plist opcję "zezwalaj na dowolne ładunki" w ustawieniach zabezpieczeń aplikacji App Transport. Zostałem wpisany jako prawdziwy, ale jego typ został ustawiony jako ciąg dla Boolean

0

Gdzieś gdzie kod NSDictionary jest przekazywany do kodu, w którym oczekuje się czegoś, co można zinterpretować jako wartość logiczną, na przykład NSString lub NSNumber. Nie widzę czegoś takiego w podanym kodzie. Jeśli punkty przerwania wyjątków nie działają, spróbuję dodać gdzieś normalne punkty przerwania i przechodzić przez kod, dopóki się nie zawiesi. Możesz także spróbować usunąć niektóre sekcje i kod i sprawdzić, czy awarie nadal występują, pozwoli ci to zawęzić część kodu.