Error de la aplicación de demostración básica GoogleMaps iOS: selector no reconocido enviado a la instancia

Estoy tratando de ejecutar el código SDK demo de iOS básico. He creado el API keyand carga bien. Aunque he transferido el código de viewDidLoad a loadView, el efecto permanece. Ver el siguiente código

-(void)loadView{ // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:6]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.myLocationEnabled = YES; self.view = _mapView; // Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = _mapView; } 

La cámara se crea pero cuando se ejecuta esta línea

 _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 

se emite una excepción NSException con la descripción -> – [GMSMapView animateToCameraPosition:]: selector no reconocido enviado a la instancia.

* Terminación de aplicación debido a excepción no detectada ‘NSInvalidArgumentException’, razón: ‘- [GMSMapView animateToCameraPosition:]: Selector no reconocido enviado a la instancia 0x14dbb870’ * stack de llamadas primer tiro: (0x2f462f4b 0x39cd96af 0x2f4668e7 0x2f4651cb 0x2f3b44d8 0x4cebe9 0x4cd78f 0x4ccc41 0x4ccb3d 0x21ced5 0x31bda1bd 0x31bda139 0x1d4b27 0x1d4a83 0x1d51cd 0x31bda37b 0x31c850f1 0x31c85007 0x31c845e3 0x31c8430d 0x31c8407d 0x31c84015 0x31bd5da3 0x3185cc6b 0x3185847b 0x3185830d 0x31857d1f 0x31857b2f 0x31bce0c3 0x2f42e1cd 0x2f42bb71 0x2f42beb3 0x2f396c27 0x2f396a0b 0x34097283 0x31c3a049 0xf58b1 0x3a1e1ab7) libc ++ abi.dylib: termina con excepción no detectada de tipo NSException

Creo que puede haber olvidado hacer de la clase un delegado de GMSMapView. El bit GMSMapViewDelegate después de que () debe estar entre <>

No asigno ese delegado, así como el código base de Googles no lo asigna. Me las arreglé para que funcione. La documentación de google en Google Maps establece lo siguiente:

Elija su proyecto, en lugar de un objective específico, y abra la pestaña Configuraciones de comstackción. En la sección Banderas del otro enlace, agregue -ObjC. Si estas configuraciones no son visibles, cambie el filtro en la barra Configuración de comstackción desde Básico a Todo.

Pero su proyecto de ejemplo, después de mi examen, tiene la bandera establecida en el objective. Establecerlo en el objective de comstackción dentro de mi proyecto en mi caso ayudó y mi código publicado funciona bien.

Agregue -ObjC en el GoTo de su proyecto: haga clic en su proyecto-> Objetivos-> Configuración de comstackción-> buscar (otros indicadores del enlazador) -> Establecer (-ObjC) Consulte la captura de pantalla: Bandera de Enlazador

Probablemente haya olvidado hacer esto: (como se indica en los documentos de google)

Elija su proyecto, en lugar de un objective específico, y abra la pestaña Configuraciones de comstackción. En la sección Banderas del otro enlace, agregue -ObjC. Si estas configuraciones no son visibles, cambie el filtro en la barra Configuración de comstackción desde Básico a Todo.

Tuve el mismo error porque escribí por error -objC en lugar de -ObjC (con mayúscula O)

si ayuda a alguien

Es importante tener en cuenta que debe agregar el -ObjC a la sección de Indicadores del otro en su proyecto … NO en su objective específico.

Otras personas han mencionado la siguiente sección de la Documentación de Google

Elija su proyecto, en lugar de un objective específico, y abra la pestaña Configuraciones de comstackción. En la sección Banderas del otro enlace, agregue -ObjC. Si estas configuraciones no son visibles, cambie el filtro en la barra Configuración de comstackción desde Básico a Todo.

Sin embargo, no fue hasta que agregué el indicador -ObjC en la sección “Otros indicadores de encuadernación” de mis proyectos, y NO en la sección “Banderas del otro enlace” de los objectives, pude resolver el error del selector no reconocido.

Creo que puede haber olvidado hacer de la clase un delegado de GMSMapView. El bit GMSMapViewDelegate después de que () debe estar entre <>

 @interface StructuredGeocoderViewController () GMSMapViewDelegate @end @implementation StructuredGeocoderViewController { GMSMapView *_mapView; GMSGeocoder *_geocoder; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 longitude:151.2086 zoom:12]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.delegate = self; _geocoder = [[GMSGeocoder alloc] init]; self.view = _mapView; } 

Cuando desee enviarlo a la tienda o al vuelo de prueba, también colocará la bandera -ObjC en la versión enter image description here

Solo hay algunas modificaciones que debes hacer.

  1. Proporcione el nombre de clase de UIView personalizado como “GMSMapView”.
  2. Luego haz una salida a tu clase.

    @IBOutlet var locationMapView: GMSMapView!

  3. En ViewDidLoad () agregue el siguiente código.

    let camera = GMSCameraPosition.camera (withLatitude: 10.1518, longitud: 76.3930, zoom: 6.0)

     self.locationMapView.camera = camera let initialLocation = CLLocationCoordinate2DMake(10.1518, 76.3930) let marker = GMSMarker(position: initialLocation) marker.title = "Kochi" marker.snippet = "Kerala" marker.map = locationMapView marker.snippet = "Kerala"