2016-06-24 14 views
6

Próbuję dodać mapę przy użyciu GMSMapView, ale dostaję błędy podczas tworzenia gniazdka dla widoku.Słaby może być zastosowany tylko do typów protokołów klasy i klasy nie <<errortype>>

Poniżej znajduje się fragment kodu:

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 
     } 
    } 
} 

Dostaję następujące błędy na linii

@IBOutlet weak var mapVIew: GMSMapView!: 
  1. słaby może być stosowana tylko do klasy i protokół związany z klasy typy nie <>
  2. użycie niezadeklarowanego typu "GMSMapView"

Proszę może ktoś mi pomóc

+0

Czy przypisałeś klasę GMSMapView do tego widoku z planszy opowieści? –

+0

@JigarTarsariya Tak mam – PersianBlue

+0

Usuń słabe i zrób IBOutlet tego widoku –

Odpowiedz

1

Uwaga: Aktualizacja tę odpowiedź, aby uniknąć nieporozumień jak już odpowiedział źle wcześniej. Dzięki @ Inn0vative1 za wskazanie błędu

Do tego trzeba będzie importować MapKit

import MapKit 

Twój viewController nie potwierdził protokół, proszę odpowiadać protokół CLLocationManagerDelegate

class MapViewController: UIViewController,CLLocationManagerDelegate { 
} 
+0

To nie rozwiązuje problemu. Spójrz na odpowiedź Inn0vative1. Musisz "zaimportować GoogleMaps", aby pozbyć się ostrzeżenia. Jeśli używasz GoogleMaps, powinieneś zaimplementować 'rozszerzenie MapViewController: GMSMapViewDelegate {...}' zamiast CLLocationManagerDelegate. –

0

ONE również uzyskać ten problem, jeśli biblioteka zawierająca formant nie została zaimportowana.

np., Jeśli staramy się stworzyć IBOutlet do kontroli PDFView i bibliotekę Quartz nie jest importowany, to wyskakuje błąd w.

8

Zaznaczony odpowiedź nie jest poprawna odpowiedź na ten problem. W przypadku, gdy ktoś inny trafi to, problem polega na tym, że potrzebne ramy nie są importowane. W tym przypadku GoogleMaps. Rozwiązaniem tego jest, w górnej części pliku dodać

import GoogleMaps 

Innym przykładem jest, jeśli pojawia się błąd po dodaniu MkMapView.

@IBOutlet weak var mapView: MKMapView 

Do tego trzeba będzie importować MapKit

import MapKit 
0

Ostatnio poznałam również ten problem. Naprawiłem to, odznaczając docelowe członkostwo --xxxTests. Jeden z moich plików sprawdził cel xxxTests.

Powiązane problemy