"weak" 只能应用于类和类相关的协议类型,而不能应用于 <<errortype>>。

8
我将尝试使用GMSMapView添加地图,但是当我为视图创建一个插座时出现错误。
以下是代码片段:
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
        }
    }
}

我在第行遇到了以下错误:
@IBOutlet weak var mapVIew: GMSMapView!:
  1. weak只能应用于类和限定为类的协议类型,而不是<>。
  2. 使用未声明的类型“GMSMapView”。

请有人帮忙解决一下吗?


你是否已经在故事板中将GMSMapView类分配给该视图? - Jigar Tarsariya
@JigarTarsariya 是的,我有。 - Khadija Daruwala
移除弱引用并将该视图的 IBOutlet 进行设置。 - Jigar Tarsariya
1
你尝试在文件顶部添加 import GoogleMaps 了吗? - t4nhpt
@Cristik 是的,我已经更新了我的代码。当我导入GoogleMaps时,在locationManager.delegate = self处出现错误。错误:无法将类型“MapViewController”分配给类型“CLLocationManagerDelegate?”。 - Khadija Daruwala
1
@PersianBlue,基本上原问题已经得到解答。除了代码外,问题的标题和内容都与您当前的问题不符。请更新。 - Cristik
4个回答

9

这个标记的答案并不是解决这个问题的正确答案。如果其他人也遇到了这个问题,原因是需要的框架没有被导入,比如GoogleMaps。解决方法是,在文件顶部添加以下内容:

import GoogleMaps

另一个例子是,如果您添加了一个MkMapView后出现错误。
@IBOutlet weak var mapView: MKMapView

为此,您需要导入MapKit

import MapKit

3

注:更新此答案以避免误解,因为我之前的回答有误。感谢 @Inn0vative1 指出错误。

为此,您将需要导入MapKit。

import MapKit

您的视图控制器未确认协议,请确认 CLLocationManagerDelegate 协议。

class MapViewController: UIViewController,CLLocationManagerDelegate {
}

这并没有解决问题。看看Inn0vative1的回答。你需要import GoogleMaps来消除警告。如果你正在使用GoogleMaps,你应该实现extension MapViewController: GMSMapViewDelegate {...}而不是CLLocationManagerDelegate。 - Derek Soike

0

最近我也遇到了这个问题。我通过取消选中目标成员--xxxTests的方式进行了修复。我的一个文件选中了xxxTests目标。


0

如果未导入包含控件的库,则也会出现此问题。

例如,如果我们尝试为PDFView控件创建IBOutlet,并且未导入Quartz库,则会出现此错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接