【问题标题】:weak may only be applied to class and class-bound protocol types not <<errortype>>weak 只能应用于类和类绑定协议类型,而不是 <<errortype>>
【发布时间】:2016-10-26 14:42:17
【问题描述】:

我正在尝试使用GMSMapView 添加地图,但在为视图创建出口时出现错误。

以下是sn-p的代码:

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 类分配给故事板中的该视图?
  • @JigarTarsariya 是的,我有
  • 移除weak并制作该视图的IBOutlet
  • 您是否尝试在文件顶部添加import GoogleMaps
  • @PersianBlue 所以基本上原来的问题现在已经回答了。问题的标题和内容(代码除外)都与您当前的问题不相符。请更新。

标签: ios xcode swift dictionary


【解决方案1】:

标记的答案不是这个问题的正确答案。万一其他人遇到这个问题,问题是没有导入所需的框架。在这种情况下谷歌地图。 解决方法是在文件顶部添加

import GoogleMaps

另一个例子是,如果您在添加 MkMapView 后遇到错误。

@IBOutlet weak var mapView: MKMapView

为此,您必须导入 MapKit

import MapKit

【讨论】:

    【解决方案2】:

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

    为此,您必须导入 MapKit

    import MapKit
    

    你的viewController没有确认协议,请遵守CLLocationManagerDelegate协议

    class MapViewController: UIViewController,CLLocationManagerDelegate {
    }
    

    【讨论】:

    • 这并不能解决问题。看看 Inn0vative1 的回答。您需要import GoogleMaps 才能消除警告。如果您使用的是 GoogleMaps,您应该实现 extension MapViewController: GMSMapViewDelegate {...} 而不是 CLLocationManagerDelegate。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      最近我也遇到了这个问题。我通过取消选中目标成员 --xxxTests 来解决此问题。我的一个文件检查了xxxTests 目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-21
        • 2018-02-07
        • 2020-04-23
        • 2015-07-26
        • 2019-11-23
        • 2016-02-01
        • 1970-01-01
        相关资源
        最近更新 更多