2016-06-24 31 views
6

Sto tentando di aggiungere una mappa utilizzando GMSMapView ma sto ricevendo errori quando creo una presa per la vista.debole può essere applicato solo a tipi di protocollo con classe e classe non <<errortype>>

Quello che segue è il frammento di codice:

import UIKit 
import GoogleMaps 

class MapViewController: UIViewController { 

    @IBOutlet weak var mapVIew: GMSMapView! 
    @IBOutlet weak var mapCenterPinImage: UIImageView! 
    @IBOutlet weak var pinImageVerticalConstraint: NSLayoutConstraint! 
    var searchedTypes = ["bakery", "bar", "cafe", "grocery_or_supermarket", "restaurant"] 
    let locationManager = CLLocationManager() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     locationManager.delegate = self 
     locationManager.requestWhenInUseAuthorization() 
    } 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "Types Segue" { 
      let navigationController = segue.destinationViewController as! UINavigationController 
      let controller = navigationController.topViewController as! TypesTableViewController 
      controller.selectedTypes = searchedTypes 
      controller.delegate = self 
     } 
    } 
} 

sto ottenendo i seguenti errori in linea

@IBOutlet weak var mapVIew: GMSMapView!: 
  1. debole può essere applicato solo in classe e il protocollo di classe-bound tipi non >
  2. uso di tipo non dichiarato "GMSMapView"

favore qualcuno può darmi una mano

+0

Hai assegnato la classe GMSMapView a quella vista dalla storyboard? –

+0

@JigarTarsariya Sì, ho – PersianBlue

+0

Rimuovi debole e rendere IBOutlet di quella vista –

risposta

1

Nota: L'aggiornamento questa risposta per evitare equivoci come ho risposto male in precedenza. Grazie @ Inn0vative1 per sottolineare l'errore

Per questo si dovrà importare MapKit

import MapKit 

tuo viewController non ha confermato il protocollo, Si prega di rispettare il protocollo CLLocationManagerDelegate

class MapViewController: UIViewController,CLLocationManagerDelegate { 
} 
+0

Questo non risolve il problema. Guarda la risposta di Inn0vative1. Devi "importare Google Maps" per sbarazzarti dell'avvertimento. Se utilizzi Google Maps, devi implementare "estensione MapViewController: GMSMapViewDelegate {...}" anziché CLLocationManagerDelegate. –

0

Una volontà anche ottenere questo problema, se la libreria contenente il controllo non viene importata.

ad es., Se stiamo cercando di creare un IBOutlet a un controllo PDFView e la biblioteca al quarzo non viene importato, questo errore si apre in.

8

La risposta marcata non è la risposta giusta a questo problema. Nel caso in cui qualcun altro lo colpisca, il problema è che il framework necessario non è importato. In questo caso GoogleMaps. La correzione di questo è, nella parte superiore del file di aggiungere

import GoogleMaps 

Un altro esempio è se si ottiene l'errore dopo l'aggiunta di un MkMapView.

@IBOutlet weak var mapView: MKMapView 

Per questo si dovrà importare MapKit

import MapKit 
0

Recentemente ho anche incontrato questo problema. Ho risolto il problema deselezionando l'appartenenza al target --xxxTests. Uno dei miei file ha controllato la destinazione xxxTests.